我试图在IIS 6.0上点击我的REST WCF服务时看到来自WCF的以下错误:
找不到与绑定WebHttpBinding的端点的scheme http匹配的基址。注册的基地址方案是[]。
我的web.config看起来像:
<system.serviceModel>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<!--LOCAL-->
<add prefix="http://localhost/CustomTrackingService/CustomTrackingService.svc"/>
<!--TEST-->
<!--<add prefix="http://mytestserver/CustomTrackingService/CustomTrackingService.svc"/>-->
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<services>
<service name="MyService.CustomTrackingService">
<endpoint
address="MyAction"
binding="webHttpBinding"
contract="MyContract.ICustomTrackingService"
behaviorConfiguration="RestBehavior" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="RestBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
这在我的测试服务器上工作正常,如果我让Casini抓住它(将基地址前缀localhost / CustomTrackingService更改为localhost:1234 /),本地工作正常。我不记得是什么导致这种情况发生,我的Google-fu没有产生有用的结果。有什么想法吗?
答案 0 :(得分:1)
所以看起来问题是本地我试图使用没有定义基址的相对地址。这在我的测试服务器上运行,因为测试服务器错误地定义了多个主机头,这似乎转换为WCF中定义的多个基地址,这是禁忌。我最初在测试服务器上使用了因为我收到关于http的多个基地址的错误,并且没有意识到真正的问题,我过滤掉了我想要使用的那个。 Thsi将无法在本地工作,因为我没有定义主机头,因此过滤器没有提供任何内容,相对寻址尝试失败,因为没有指定基址。
我要做更多的实验,看看我的情况最好的设置是什么,但检查IIS中的主机头肯定有帮助。此外,this link对理解实际情况有很大帮助。
答案 1 :(得分:0)
如果您在IIS中托管,为什么在端点@地址中使用基地址前缀+不相关的值?