(转)在WCF服务的ServiceReferences.ClientConfig中使用相对路径
2013-10-19 18:19
302 查看
问题:
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" />
经过测试,此方法可行!问题解决。
相关文章推荐
- web.config连接ACCESS数据库,使用相对路径
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- 一个HttpClient使用Windows认证请求WCF服务的例子
- If WCF Service side and Client side config is different?!
- 如何使用svconfigeditor.exe编辑WCF Service配置文件--配置Diagnostics进行WCF Service的log和Trace(三)
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- Asp.Net连接ACCESS数据库相对路径问题,web.config中如何使用相对路径及在类文件中调用这个相对路径
- 如何创建使用 POCO 定义的实体域服务 WCF RIA Service
- Asp.Net 2.0连接ACCESS数据库相对路径问题,web.config中如何使用相对路径
- 可以使用可用的服务和参数调用在“eWorld.WCFImplement.ServiceImplement.ImageArchiveService”类型上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的构造函数: 无法解析参数'eWorld.WCFBLL.ImageArchive.IDocumentOperation
- 使用WindowsService为宿主实装WCF 服务
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务