我正在尝试启用Windows身份验证并禁用Intranet应用程序的匿名身份验证。我已经在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无法识别此元素。
答案 0 :(得分:3)
我终于明白了。在与我的一个经理项目进行进一步比较后,我注意到我应该将此代码添加到我的Web.COnfig中,而不是我认为需要的ServiceReferences.ClientConfig。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>