【发布时间】:2008-10-20 16:58:23
【问题描述】:
我想创建一个托管在 IIS6 中的 WCF 服务并在 IIS 中禁用匿名身份验证。并且不要使用 SSL。
所以我唯一的办法就是使用带有TransportCredentialOnly 的basicHttpBinging,不是吗?
我创建一个虚拟目录,设置 Windows 集成身份验证并取消选中“启用匿名访问”。
这是我的 web.config:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="Samples.ServiceFacadeService" behaviorConfiguration="ServiceFacadeServiceBehavior">
<endpoint address="" binding="basicHttpBinding" bindingName="MyBinding"
contract="Samples.IServiceFacadeService">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceFacadeServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
您可以看到,我什至没有包含用于元数据交换的 MEX-enpoint。只有一个端点和一个具有 TransportCredentialOnly 安全性的绑定。
但是当我尝试启动服务(通过客户端代理调用方法)时,我在 EventLog 中遇到了这样的异常:
例外: System.ServiceModel.ServiceActivationException: 服务 '/wcftest/ServiceFacadeService.svc' 无法激活,因为 编译时出现异常。这 异常消息是:安全 此服务的设置需要 “匿名”身份验证,但它是 未为 IIS 应用程序启用 托管此服务.. ---> System.NotSupportedException:安全性 此服务的设置需要 “匿名”身份验证,但它是 未为 IIS 应用程序启用 托管此服务。
我不知道为什么我的服务需要匿名身份验证?为什么?
【问题讨论】: