无法在本地计算机上运行WCF服务

时间:2013-08-26 17:52:33

标签: wcf .net-4.0

我有一个wcf服务,只有在我将其部署到服务器并通过IIS配置后才能运行。我通过IIS express运行它时得到的错误信息是:

  

主机上配置的身份验证方案('Ntlm,Anonymous')不允许在绑定'BasicHttpBinding'('Negotiate')上配置的身份验证方案。请确保将SecurityMode设置为Transport或TransportCredentialOnly。此外,可以通过IIS管理工具,通过ServiceHost.Authentication.AuthenticationSchemes属性,在元素的应用程序配置文件中更改此应用程序的身份验证方案,通过更新绑定上的ClientCredentialType属性,或通过调整HttpTransportBindingElement上的AuthenticationScheme属性。

我的web.config服务binging看起来像这样:

 <services>
      <service name="LMS.Services.Services.AppService" behaviorConfiguration="LargeDataRequestBehavior">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttp_LargeDataRequestBinding" contract="LMS.Services.Services.AppService" />
        <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="basicHttp_LargeDataRequestBinding" contract="IMetadataExchange" />
      </service> </services>

我的绑定看起来像这样:

   <bindings>
      <basicHttpBinding>
        <binding name="basicHttp_LargeDataRequestBinding" receiveTimeout="01:00:00" sendTimeout="01:00:00" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />          
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" >              
            </transport>
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      <basicHttpBinding>
    </bindings>

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

尝试更改此部分。问题是Credential Type Windows的枚举映射到名为Negotiate的协议。 IIS通知您,您的网站尚未启用协商,仅允许基本(无安全性)和Ntlm(另一种Windows安全形式)。

<bindings>
  <basicHttpBinding>   
    <binding>      
      <security >
        <transport clientCredentialType="Ntlm" >              
        </transport>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

这里的WTF是“谈判”和“Windows”之间存在不匹配。

答案 1 :(得分:1)

更新IIS Authentication设置,如下所示:

  • 匿名身份验证:Disabled
  • Windows身份验证:Enabled