我在IIS服务器中托管了2个WCF服务。
这是web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="HttpBinding" />
</basicHttpBinding>
</bindings>
<services>
<service name="BShop.Services.BubensService">
<endpoint address="http://localhost:9001/BubensService" binding="basicHttpBinding"
bindingConfiguration="HttpBinding" name="" contract="BShop.Services.IBubensService" />
</service>
<service name="BShop.Services.OrdersService">
<endpoint address="http://localhost:9001/OrdersService" binding="basicHttpBinding"
bindingConfiguration="HttpBinding" contract="BShop.Services.IOrdersService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
当我尝试运行它时,我得到了
没有协议绑定与给定的匹配 地址 的 'http://本地主机:9001 / BubensService'。 协议绑定配置在 IIS或WAS中的站点级别 配置。
我在配置中遗漏了什么?
答案 0 :(得分:23)
在IIS中托管WCF服务时,在服务端点中定义的地址不是您需要使用的地址。
<endpoint
// this is **NOT** the address you can use to call your service!
address="http://localhost:9001/BubensService"
而是,Web服务器,其端口(通常为80)和虚拟目录以及SVC文件确定您的服务地址。所以你这里的服务地址是:
http://YourServer/YourVirtualDirectory/YourServiceFile.svc/
您可以做的是定义相对地址,例如:
<service name="BShop.Services.BubensService">
<endpoint name=""
address="BubensService"
binding="basicHttpBinding" bindingConfiguration="HttpBinding"
contract="BShop.Services.IBubensService" />
</service>
然后这个服务可以在以下地方调用:
http://YourServer/YourVirtualDirectory/YourServiceFile.svc/BubensService
答案 1 :(得分:0)
只是为了搜索人的利益。我遇到了这个问题。为了解决这个问题,我使用marc_s的答案检查了web.config然后执行了以下操作,因为我仍有问题:
答案 2 :(得分:0)