我正在使用IIS V5.1。集成的Windows身份验证
我有以下网络配置:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="wsHttpEndpointBinding">
<security mode="Transport" />
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="DXDirectory.Service1Behavior"
name="DXDirectory.DXDirectoryService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpEndpointBinding"
name="wsHttpEndpoint" contract="DXDirectory.IDXDirectoryService" />
<endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration=""
name="MexHttpsBindingEndpoint" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DXDirectory.Service1Behavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
当我选择在浏览器中查看svc文件时,它将显示以下错误:
例外:
此服务的安全设置需要“匿名”身份验证,但不会为承载此服务的IIS应用程序启用它。
删除Mex端点时会删除此错误。
但是当我尝试在客户端应用程序中添加服务引用时,它会出现以下错误:
网址http://localhost/DXDirectory/DXDirectoryService.svc处的文档未被识别为已知文档类型。
每种已知类型的错误消息可以帮助您解决问题:
HTTP请求未经授权,客户端身份验证方案为“匿名”。从服务器收到的身份验证标头是“Negotiate,NTLM”。
远程服务器返回错误:(401)未经授权。
如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。
答案 0 :(得分:1)
指定传输安全模式时,WCF需要https。尝试修复它,看看你得到了什么错误。
另请检查您的system.web标记。
你回复“text / html”的回复可能是一个错误页面,所以如果你有可能弄错它,你会得到一个更好的错误信息。