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" />

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

  • 相关阅读:
    组装query,query汇总,query字段
    POJ 1276, Cash Machine
    POJ 1129, Channel Allocation
    POJ 2531, Network Saboteur
    POJ 1837, Balance
    POJ 3278, Catch That Cow
    POJ 2676, Sudoku
    POJ 3126, Prime Path
    POJ 3414, Pots
    POJ 1426, Find The Multiple
  • 原文地址:https://www.cnblogs.com/wangyt223/p/3378145.html
Copyright © 2011-2022 走看看