错误“没有协议绑定与给定地址匹配......”

时间:2010-11-23 21:34:02

标签: .net wcf

我在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中的站点级别   配置。

我在配置中遗漏了什么?

3 个答案:

答案 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然后执行了以下操作,因为我仍有问题:

  1. 删除虚拟目录。
  2. 去项目属性 - &gt; Web面板 - &gt;使用http:// {localhost} / {myservice}的项目URL选择“使用本地IIS Web服务器”(显然没有大括号)并重新创建虚拟目录。
  3. 使用集成管道模式将App Pool更改为.NET 4。应用程序池的更改似乎解决了这个问题。

答案 2 :(得分:0)

如果有人在使用Visual Studio进行开发期间在浏览器中查看WCF服务时遇到此问题,那么这个人适合他们。

在为.svc文件中的端点address属性分配值之后,尝试从VS查看我的Web.config服务时遇到了这个问题,但是如果我没有分配端点address赋予一个值,然后它可以完美地工作。 WCF Service Config File