我们有一个简单的WCF(在.NET 4.0上)服务,该服务使用Windows
身份验证,并且在IIS 7身份验证功能上启用了相同的功能。这在两台服务器上使用相同的设置和相同的配置,但在其中一台服务器上返回错误Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service.
我在网上检查了所有可能的内容,并尝试了所有选项,例如禁用其他身份验证机制等。似乎没有工作。任何人都可以指出可能是什么问题。
两个服务器上相同的settigns在第三台服务器上完全正常运行它有问题。
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="ABCDbConnection" value="Data Source=xxx; Initial Catalog=sss;Integrated Security=True"/>
<add key="MetadataDbConnection" value="Data Source=xxx; Initial Catalog=sss;Integrated Security=True"/>
<add key="UsageEnabled" value="True"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<protocolMapping>
<add scheme="http" binding="basicHttpBinding" bindingConfiguration="WindowsBasicHttpBinding"/>
</protocolMapping>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="6553600"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="WindowsBasicHttpBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
答案 0 :(得分:2)
此线程中的任何解决方案是否都有效?
http://social.msdn.microsoft.com/Forums/en/wcf/thread/021babc6-2009-4ed9-81f4-ac48cc300c94
从blog post开始,它提到了KB article。
如果返回此错误并且Windows 身份验证已启用 IIS,这意味着存在问题 支持的网络身份验证 网站的网站计划 服务安装在。最多 可能的原因是它已配置 仅适用于NTLM。我们想要指定NTLM 和谈判。
答案 1 :(得分:2)
您是否尝试过使用
通过web.config启用Windows身份验证<system.web>
....
<authentication mode="Windows" />
.....
</system.web>
有可能一台机器从父配置文件继承此设置,但不能在抛出错误的机器上继承此设置。
您还可以验证是否已禁用匿名身份验证,如下图所示