情景:
使用example.com访问Awesome服务有效,而admin.example.com则抛出NotSupportedException; “此服务的安全设置需要”匿名“身份验证,但未对承载此服务的IIS应用程序启用。”
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="WcfServices.AwesomeService"
behaviorConfiguration="serviceBehavior">
<endpoint address="" binding="webHttpBinding"
contract="WcfServices.IAwesomeService"
behaviorConfiguration="jsonBehavior" />
</service>
</services>
</system.serviceModel>
如何配置WCF以忽略身份验证要求?我想要相同的行为,就像这是一个Web服务或处理程序,只需执行并返回真棒的json对象。
答案 0 :(得分:0)
听起来你有两份服务副本,一份在example.com网站下,另一份在admin.example.com下。如果admin.example.com需要IIS集成(质询/响应)身份验证,那么您的WCF服务绑定需要处于传输模式,因为IIS要求所有admin.example.com资源都是Windows身份验证。试试这个配置:
<bindings>
<basicHttpBinding>
<binding name="Binding1">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
如果这对你不起作用,你可能想尝试在他们自己的虚拟指南中托管服务,这样他们就不会受到网站安全需求的支配。
祝你好运。
答案 1 :(得分:0)
我觉得你在这里运气不好。授予AWesome.svc匿名访问权限,并允许匿名访问无法访问敏感资源的用户帐户。