绝对路径不适用于 WCF 服务
Posted
技术标签:
【中文标题】绝对路径不适用于 WCF 服务【英文标题】:Absolute path is not working for WCF Service 【发布时间】:2012-09-07 07:06:28 【问题描述】:我在以下位置有一个可用的服务文件。
C:\Documents and Settings\U16990\My Documents\Visual Studio 2010\Projects\CalculationService\CalculationService\CalculationService.svc
当我浏览 svc 文件时,它工作正常。服务端点如下所列。它目前是用于地址的相对地址。
<service name="CalculationService.CalculationService" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="CalculationService" behaviorConfiguration=""
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_CalculationServiceInterface"
contract="ICalculationService" />
</service>
我机器的IP地址是10.10.179.180 //InterNetwork AddressFamily
当我将地址更改为使用绝对路径时,它会抛出错误:
<services>
<service name="CalculationService.CalculationService" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint
address="http://10.10.179.180/C:/Documents and Settings/U16990/My Documents/Visual Studio 2010/Projects/CalculationService/CalculationService/CalculationService.svc/CalculationService"
behaviorConfiguration=""
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_CalculationServiceInterface"
contract="ICalculationService" />
</service>
</services>
错误:: 没有协议绑定与给定地址“http://10.10.179.180/C:/Documents 和 Settings/U16990/My Documents/Visual Studio 2010/Projects/CalculationService/CalculationService/CalculationService.svc/CalculationService”匹配。协议绑定在 IIS 或 WAS 配置中的站点级别进行配置。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
我们可以做些什么来纠正它?
注意:我正在使用 Visual Studio 2010 测试该服务。
参考:
-
Hosting a Simple Wcf Service in Console
error "No protocol binding matches the given address ..."
How to derive a website absolute file path from a WCF service hosted in IIS?
【问题讨论】:
【参考方案1】:端点地址不是文件的位置,而是客户端可以/将会找到服务的 URI。你可能应该使用这样的东西:
<service name="CalculationService.CalculationService" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint
address="http://10.10.179.180/CalculationService/CalculationService.svc"
behaviorConfiguration="" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_CalculationServiceInterface"
contract="ICalculationService" />
</service>
在这种情况下,您使用的是完整的 URI 而不是相对的。在您的客户端中,您必须确保端点引用相同的地址,并且一切顺利。
【讨论】:
以上是关于绝对路径不适用于 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章