我在ASP.net项目中有一个带有(常规)WCF服务的Silverlight 5 Prism应用程序。我正在使用IIS 7.5在localhost上托管它。我按照
中的所有步骤进行操作How to: Use Windows Authentication to Secure a Service for Silverlight Applications
How to: Host a Secure Service in ASP.NET for Silverlight Applications
但我无法使用Windows身份验证。每当我在IIS中关闭匿名身份验证时,我的应用程序都会抛出The remote server returned an error: NotFound.
异常,因为它找不到WCF服务。
当我尝试在Visual Studio中更新服务引用时,我收到错误Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.
当我打开匿名身份验证时,该服务正常运行,但我没有获得Windows用户凭据。我的浏览器(IE 8)设置为使用集成的Windows身份验证并自动登录本地Intranet。
我做错了什么?
这是我的IIS 7.5配置。应用程序池以集成模式运行:
的web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" />
<authentication mode="Windows" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
</configuration>
ServiceReferences.ClientConfig:
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ISecurityService" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="TransportCredentialOnly" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:85/SecurityService/SecurityService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISecurityService"
contract="SecurityServiceReference.ISecurityService" name="BasicHttpBinding_ISecurityService" />
</client>
</system.serviceModel>
</configuration>
答案 0 :(得分:0)
我只是猜测WCF部分可能无法正确设置Windows身份验证。需要将wcf服务配置为使用Windows凭据验证来自IIS的请求。因此,在这种情况下,我希望服务中需要有一个行为要求这样做。检查您是否已正确配置这些。 servicecredentials和clientcredentials。