我在VisualStudio 2010中创建一个简单的WCF服务。我正在使用basicHttpBinding方法。
当我在浏览器中查看.svc时,我收到以下错误:
“此服务的安全设置需要Windows身份验证,但未为承载此服务的IIS应用程序启用。”
我的web.config看起来像,
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpEndpointBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="IAManagement.Service1Behavior"
name="IAManagement.Service1">
<endpoint address="" binding="wsHttpBinding" contract="IAManagement.IService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="IAManagement.CreateIABehavior"
name="IAManagement.CreateIA">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpEndpointBinding"
name="BasicHttpEndpoint" contract="IAManagement.ICreateIA">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="IAManagement.Service1Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="IAManagement.CreateIABehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
任何人都可以帮我解决这个问题吗?谢谢
您的配置如下:
<binding name="BasicHttpEndpointBinding"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding>
是使用Windows身份验证验证客户端,并且尚未在IIS上配置相同的设置。
如果您希望客户端身份验证类型为Windows,则进入IIS并选择虚拟目录,您可以找到名为“身份验证”的部分。双击,您可以找到“Windows身份验证”作为其中一个元素,其状态应为“已启用”,以使您的Web服务正常工作。
如果您不想要任何类型的身份验证,则需要将安全模式设置为none,这将在浏览器中显示您的服务。