WCF例外:此服务的安全设置需要“匿名”身份验证

时间:2012-01-03 15:22:43

标签: wcf

我在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>

任何人都可以帮助我解决此问题吗?感谢

1 个答案:

答案 0 :(得分:0)

您的配置如下:

<binding name="BasicHttpEndpointBinding"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> 

是使用Windows身份验证验证客户端,并且尚未在IIS上配置相同的设置。

如果您希望客户端身份验证类型为Windows,请转到IIS并选择虚拟目录,然后您可以找到名为“身份验证”的部分。双击,您可以找到“Windows身份验证”作为其中一个元素,其状态应为“已启用”,以使您的Web服务正常工作。

如果您不想要任何类型的身份验证,则需要将安全模式设置为none,这将在浏览器中显示您的服务。