我正在尝试设置一个在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?好吧,我想我会给你一个去,但如果你有任何其他建议,我肯定会接受它。
感谢。
答案 0 :(得分:1)
您是否验证过在您托管服务的IIS应用程序中启用了匿名身份验证?在IIS管理控制台中,浏览到托管服务的站点和应用程序。然后确保选中“功能视图”,并选择“身份验证”选项。您应该看到各种形式的身份验证(匿名,Windows,ASP.NET模拟等),并且每个身份验证应该在其旁边启用或禁用。
答案 1 :(得分:1)
根据WCF NetTcpBinding Security - how does it work?,NetTCP的默认安全设置是Windows身份验证。听起来有一两件事可能是问题:
确保启用了Windows身份验证(在身份验证下的IIS管理控制台中 - 在@Joel C的答案中找到匿名身份验证开关的位置)。
如果运行客户端的帐户无法进行身份验证,您可能需要在创建客户端代理时尝试指定Windows帐户凭据。
客户端和服务器是否在同一个域中?