【问题标题】:WCF Exception: ...this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this serviceWCF 异常:...此服务需要“匿名”身份验证,但未为托管此服务的 IIS 应用程序启用
【发布时间】:2012-03-16 21:35:21
【问题描述】:

我在这里和任何地方都多次看到这个问题,但我无法理解它。

这就是我想要做的。我需要在 IIS 6 中托管 WCF 服务。我想要用户名/密码安全,我不希望这些未加密传递,所以我使用 HTTPS。我在我的 IIS 上本地工作,但是当我开始部署它时,我得到匿名访问未启用错误。在我的本地 IIS 上启用了匿名访问,在部署的服务器上没有启用它,我们不想启用它。问题明白了。解决方案对我来说并不明显......

如果我导航到 IE 中的页面,或者从 Visual Studio 添加服务引用,我在输入我的用户名/密码后会收到此错误。所以这表明我的证书和 HTTPS 工作正常,并且用户名和密码正确。以下是 web.config 中的相关设置:

<services>
  <service name="SecureWcfTestsApplication.Service1">
    <endpoint address=""
      binding="wsHttpBinding"
      bindingConfiguration ="Binding2"
      contract="SecureWcfTestsApplication.IService1" />
  </service>
</services>

<bindings>
  <basicHttpBinding>
  </basicHttpBinding>
  <wsHttpBinding>
    <binding name="Binding2">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="Windows" algorithmSuite="Default" />
      </security>
    </binding>        
  </wsHttpBinding>
</bindings>

我正在使用 wsHttpBinding,因为它不喜欢将 clientCredentialType 设置为 Windows 的 basicHttpBinding。话虽如此,我宁愿使用 basicHttp 但它希望 UserName 作为 clientCredentialType,我不确定 UserName 和 Windows 安全之间有什么区别。

最好的

【问题讨论】:

    标签: windows wcf security iis anonymous


    【解决方案1】:

    如果你没有使用Windows身份验证配置传输安全,你得到的异常是正常的,http://msdn.microsoft.com/en-us/library/ms733089.aspx

    在这种情况下需要&lt;transport&gt; 标签,尽管您已经定义了&lt;message&gt; 标签。

    【讨论】:

    • 嗨 - 我添加了这个并且仍然得到同样的错误 - 我现在有这个:
    • 以防万一以后有人遇到这个问题,这是我发现的最简单的方法。
    【解决方案2】:

    在 IIS 管理器中单击您的站点。您需要“在功能视图中”(而不是“内容视图”)

    在“功能视图”的IIS部分中选择所谓的“身份验证”功能并双击它。您可以在此处启用 Windows 身份验证。这也是可能的(我认为在线程中的一个建议中)通过 web.config 中的设置(...)

    但也许您有一个 web.config,您不想过多地浏览。那么这个线程不会有太多帮助,这就是我添加这个答案的原因

    【讨论】:

      【解决方案3】:

      可以并且在某些情况下必须为服务启用匿名身份验证,但不能为网站启用。

      因此,请检查您网站的“root”身份验证是否仅启用了 Windows 身份验证。然后展开您的站点,选择“服务”文件夹并确保您的服务启用了 Windows 和匿名身份验证。

      至少我与基本的 MSSQL 主数据服务网站和服务有相同的错误消息,这就是解决方案。仅运行服务时我确实收到了错误,但站点运行几乎正常,MDS Explorer 无法正常工作,因为服务的身份验证设置一开始是错误的。此错误配置的原因可能是创建新 MDS 站点时 MDS 配置管理器中的错误?

      因此,在我的情况下,问题不是通过对 web.config 或 ApplicationHost.config 文件进行任何特殊编辑来解决,而只是为网站选择正确的身份验证设置及其在 IIS 管理器中的服务。我不确定这里是不是这样,但也许值得一试?

      【讨论】:

        【解决方案4】:

        在一个特别愚蠢的时刻,我也收到了这个错误:

        WCF 异常:…此服务需要“匿名”身份验证,但托管此服务的 IIS 应用程序未启用它

        我最终意识到我的 web.config 在“system.web”中根本没有“authentication”标签。难怪 IIS 抱怨身份验证问题!

        解决问题就像添加一样简单:

          <system.web>
            <authentication mode="Windows" />
        

        愚蠢,我知道...但我希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-05
          相关资源
          最近更新 更多