1

我正在使用 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 端点时,此错误被删除。

但是当我尝试在客户端应用程序中添加服务引用时,会出现以下错误:

URL http://localhost/DXDirectory/DXDirectoryService.svc处的文档未被识别为已知文档类型。

来自每种已知类型的错误消息可能会帮助您解决问题:

HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“协商,NTLM”。

远程服务器返回错误:(401) Unauthorized。

如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

4

1 回答 1

1

当您指定传输安全模式时,WCF 需要 https。尝试解决这个问题,看看你得到了什么错误。

还要检查您的 system.web 标签。

你得到的回复“text/html”,可能是一个错误页面,所以如果你有可能找到它,你会得到一个更好的错误信息。

于 2009-09-01T09:36:14.093 回答