0

我正在尝试为 Intranet 应用程序启用 Windows 身份验证并禁用匿名身份验证。我已经在 IIS7 中启用了 Windows 身份验证并禁用了匿名,并将我的 Web.Config 设置为使用 Windows 身份验证。

<system.web>
    <authentication mode="Windows" />
    <compilation debug="true" targetFramework="4.0" />
</system.web>

当我部署和运行我的应用程序时,只会加载页眉。当我在 Chrome 或 IE 中导航到我的 Service.svc 文件时,我收到以下错误:

此服务的安全设置需要“匿名”身份验证,但托管此服务的 IIS 应用程序未启用它。

System.NotSupportedException:此服务的安全设置需要“匿名”身份验证,但托管此服务的 IIS 应用程序未启用它。

我认为这是我的 Web.Config 或 Service.svc.cs 的问题,但我无法识别它。这只发生在一项服务上。在 IIS7 中启用匿名身份验证将解决该问题,但我需要禁用它。

在我的 ServiceRefernces.ClientConfig 中,我有:

<configuration>
  <system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IService" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
  <endpoint address="http://OHARA-WIN7/nightlyweb/Service.svc"       
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IService"    
      contract="ServiceReference2.IService"
      name="BasicHttpBinding_IService" />
    </client>
  </system.serviceModel>
</configuration>

我看到很多帖子告诉人们将 TransportClientCredentialType 设置为 Ntlm,但 VisualStudio 无法识别此元素。

4

1 回答 1

3

我终于弄明白了。在与我经理的一个项目进一步比较后,我注意到我应该将此代码添加到我的 Web.CONfig,而不是像我认为我需要的那样添加到我的 ServiceReferences.ClientConfig。

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding>
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Windows" />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
</system.serviceModel>
于 2012-06-04T18:29:52.233 回答