5

我有一个 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>

任何帮助将不胜感激。

4

2 回答 2

7

尝试改变这部分。问题是凭据类型 Windows 的枚举映射到称为协商​​的协议。IIS 通知您尚未在您的网站上启用协商,仅允许 Basic(无安全性)和 Ntlm(另一种形式的 Windows 安全性)。

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

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

于 2013-08-27T03:24:00.657 回答
1

Authentication在我的情况下,如下更新 IIS设置修复了它:

  • 匿名认证:Disabled
  • Windows 身份验证:Enabled
于 2017-02-08T22:38:17.333 回答