如何在IIS7上启用Windows身份验证和NetTCPBinding WCF Web服务?

时间:2011-07-18 12:20:55

标签: wcf windows-authentication nettcpbinding

我正在尝试设置一个在IIS 7上使用Windows身份验证和NetTCPBinding的Web服务。当我尝试访问wysdl时出现此错误

“此服务的安全设置需要'匿名'身份验证,但不会为承载此服务的IIS应用程序启用。”

我的Config文件的相关部分看起来像这样......

<behaviors>
    ...
    <serviceBehaviors>
        <behavior name="WCFHostService.MyServiceBehavior">
            <serviceMetadata httpGetEnabled="false" />
            <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
    </serviceBehaviors>
</behaviors>
<services>
    <service name="UPMC.ISD.EADIS.ACO.ACOServiceConcept">
        <endpoint name ="TCP_Binding"
                address=""
                binding="netTcpBinding"
                contract="UPMC.ISD.EADIS.ACO.ACOServiceConcept.IACOService"/>
        <endpoint name="mexHttpbinding"
                contract="IMetadataExchange"
                binding="mexTcpBinding"
                address="mex" />
    </service>
</services>

如何让我的服务的“安全设置”对齐以允许我访问此服务?我还读到你可以通过摆脱你的mex绑定端点或启用匿名身份验证来摆脱错误。但是,如果你没有mex绑定,你怎么得到你的wsdl?好吧,我想我会给你一个去,但如果你有任何其他建议,我肯定会接受它。

感谢。

2 个答案:

答案 0 :(得分:1)

您是否验证过在您托管服务的IIS应用程序中启用了匿名身份验证?在IIS管理控制台中,浏览到托管服务的站点和应用程序。然后确保选中“功能视图”,并选择“身份验证”选项。您应该看到各种形式的身份验证(匿名,Windows,ASP.NET模拟等),并且每个身份验证应该在其旁边启用或禁用。

答案 1 :(得分:1)

根据WCF NetTcpBinding Security - how does it work?,NetTCP的默认安全设置是Windows身份验证。听起来有一两件事可能是问题:

  1. 确保启用了Windows身份验证(在身份验证下的IIS管理控制台中 - 在@Joel C的答案中找到匿名身份验证开关的位置)。

  2. 如果运行客户端的帐户无法进行身份验证,您可能需要在创建客户端代理时尝试指定Windows帐户凭据。

  3. 客户端和服务器是否在同一个域中?