zoukankan      html  css  js  c++  java
  • (转)在WCF服务的ServiceReferences.ClientConfig中使用相对路径

    问题:

           Silverlight项目中添加服务引用后会在Silverlight项目中生成一个ServiceReferences.ClientConfig文件,这个文件中包含了引用服务的绑定(bindings)和终结点(Endpoint)的配置信息。下面是引用一个WCF服务后自动生成的配置信息:

    <configuration>

        <system.serviceModel>

            <bindings>

                <basicHttpBinding>

                    <binding name="BasicHttpBinding_IService1" maxBufferSize="2147483647"

                        maxReceivedMessageSize="2147483647">

                        <security mode="None" />

                    </binding>

                </basicHttpBinding>

            </bindings>

            <client>

                <endpoint address="http://localhost:4177/Services/Service1.svc"

                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"

                    contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />

            </client>

        </system.serviceModel>

    </configuration>

    在程序开发阶段,使用上面的配置信息不会有什么错误。在部署程序时,服务的地址通常和开发时使用的服务地址是不一样的,这时就需要修改上面的配置信息中的终结点的地址。但是Silverlight项目编译后会将ServiceReferences.ClientConfig嵌入到生成的xap文件中,这给修改带来了一定难度。

    以上问题的描述参考自http://www.aspxcs.net/HTML/2345222075.html

    当然,你也可以用zip解压缩,修改ServiceReferences.ClientConfig后再放回去,但每次都这么处理对软件的产品化发布很不利。

    解决办法:

           看了http://zdd.me/managingendpoint发布的解决办法,我的项目是跟WCF在同一个站点中,使用的是Silverlight4,因此可以使用相对路径。具体如下:

        如果WCF服务和Silverlight应用在同一个站点,同时使用的是Silverlight 4,比如你的Silverlight应用包是在http://foo.com/clientbin/myapp.xap 路径,WCF服务路径是http://foo.com/helloworldservice.svc

    那么在Silverlight 4中可以使用相对路径的服务引用。如果你的XAP包是在/ClientBin/MyApp.xap,而服务是在与ClientBin相同的根路径/HelloWorldService.svc,那么就可以使用“../HelloWorldService.svc”。也就是说相对路径是相对与XAP包所在的路径。配置信息如下:

       1: <endpoint address="../HelloWorldService.svc"

       2:                 binding="customBinding" bindingConfiguration="RelativeBinding"

       3:                 contract="HelloServices.HelloWorldService" name="RelativeBinding" />

    经过测试,此方法可行!问题解决。

  • 相关阅读:
    IoC~MVC3+EF+Autofac实现松耦合的系统架构 [转载]
    Ioc容器Autofac系列 向导
    依赖注入框架Autofac的简单使用 转载
    学 Win32 汇编[30] 条件及循环伪指令: .IF、.WHILE、.REPEAT 等
    学 Win32 汇编[31] 结构与联合
    在 API 函数中使用 PChar 参数的几种方法
    关于 "高位" 与 "低位" 回复 "Lovemit" 的问题
    如何把类中的方法做参数 回复 "林Lin☆☆" 的问题
    一个拼图工具的制作思路 回复 "AlwaysBug" 的问题
    简单的 "双缓冲" 绘图的例子 回复 "TookiQ" 的问题
  • 原文地址:https://www.cnblogs.com/wangyt223/p/3378145.html
Copyright © 2011-2022 走看看