none
silverlight服务部署-不修改服务地址解决办法 RRS feed

  • 常规讨论

  • 问题:

    在Silverlight中是使用ServiceReferences.ClientConfig文件来保存和查看WCF服务的相对信息的

    而ServiceReferences.ClientConfig又是包含在.xap文件中的

    这样就导致如果您的Silverlight工程有用到WCF服务就需要在每次部署到不同网站的时候重新更改下WCF的配置并重新编译

    而且这个重新配置的过程又往往可能需要Visual Studio 2008的帮助来重新链接WCF服务

    而且对于有些部署的服务器就可能非常不现实了(有的服务器要求系统干净,不允许安装其他软件)

    那么怎么办呢?

    解决办法:

    写了一个方法,获取发布的服务的主机地址。

    public string GetHostUrl()
            {
                string path = string.Empty;
                int firstSlash = 0;
                int count = 0;
                path = HtmlPage.Document.DocumentUri.ToString();
                for (int i = 0; i < 3; i++)
                {
                    firstSlash = path.IndexOf("/");
                    path = path.Substring(firstSlash + 1);
                    count += firstSlash + 1; ;
                }
                path = HtmlPage.Document.DocumentUri.ToString();
                path = path.Substring(0, count);

                return path;
            }

     

    在我们New服务时候,修改其地址为服务地址。

    格式:

    服务 123 =New 服务();

    123 .Endpoint.Address = new EndpointAddress(GetHostUrl() + "命名控件/服务名字");

    例子:

    RCSReport.DataProvider.RCSReportWSSoapClient rCSReportWSSoapClient = new RCSReport.DataProvider.RCSReportWSSoapClient();
                GetHost gethost = new GetHost();
                rCSReportWSSoapClient.Endpoint.Address = new EndpointAddress(GetHostUrl() + "RCS.WS/RCSReportWS.asmx");

    2009年4月23日 10:35