WCF:没有协议绑定与给定地址匹配

时间:2017-08-29 21:10:52

标签: c# .net wcf iis

还有其他几个与此错误有关的问题(大多数关于相对地址 - 这些不是我正在寻找的,因为我们不使用相对地址)

我们有一个部署在多个环境中的WCF服务没有问题 - 但是在封闭网络上的最新安装(使用https),我们收到错误:

  

没有协议绑定与给定地址“fiddle”匹配。协议绑定在IIS或WAS配置中的站点级别配置。

我们可以很好地访问网站的根目录(使用https),因此我们非常确定这是我们绑定的配置问题 - 但我们没有想法。

该服务的web.config配置如下:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="Service.BasicHttp.BindingConfig">
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="SomeTestService" behaviorConfiguration="SomeTestService">
        <endpoint address="https://domain.local:443/testservice.svc" binding="basicHttpBinding" bindingConfiguration="Service.BasicHttp.BindingConfig" contract="ISomeTestService" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
    </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="SomeTestService">
                    <serviceMetadata httpsGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="true" />
                    <dataContractSerializer maxItemsInObjectGraph="2147483647" />
                </behavior>
      </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    </system.serviceModel>

错误的完整堆栈跟踪是:

  

[InvalidOperationException:没有协议绑定与给定的匹配   地址“https://domain.local/programmeservice.svc”。协议绑定   在IIS或WAS配置中的站点级别配置。]   System.ServiceModel.Activation.HostedAspNetEnvironment.GetBaseUri(字符串   transportScheme,Uri listenUri)+154751
  System.ServiceModel.Channels.TransportChannelListener.OnOpening()   +16284708 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan   超时)+255
  System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(时间跨度   超时)+72

     

[InvalidOperationException:ChannelDispatcher at   合同'https://domain.local/programmeservice.svc'   '“ProgrammeService”'无法打开其IChannelListener。]   System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(时间跨度   超时)+145
  System.ServiceModel.Channels.CommunicationObject.Open(时间跨度   timeout)+301 System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan   超时)+130
  System.ServiceModel.Channels.CommunicationObject.Open(时间跨度   超时)+301
  System.ServiceModel.HostingManager.ActivateService(ServiceActivationInfo   serviceActivationInfo,EventTraceActivity eventTraceActivity)+129
  System.ServiceModel.HostingManager.EnsureServiceAvailable(字符串   normalizedVirtualPath,EventTraceActivity eventTraceActivity)+741

     

[ServiceActivationException:服务'/programmeservice.svc'   由于编译期间的异常,无法激活。该   异常消息是:ChannelDispatcher at   合同'https://domain.local/programmeservice.svc'   '“ProgrammeService”'无法打开其IChannelListener ..]
  System.Runtime.AsyncResult.End(IAsyncResult result)+607194
  System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult的   结果)+231
  System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult的   ar)+177

1 个答案:

答案 0 :(得分:0)

在不太可能发生的情况下,这证明对其他人有用 - 这对我们的构建脚本来说是一个问题,它们创建了带有额外字符的端点地址,这显然不符合绑定... 就像错误信息告诉我们整个时间一样

如果您发现类似的错误,请仔细检查所提供的服务端点地址确实是否与您在IIS中设置的地址相匹配。