【问题标题】:IIS 7 hosted WCF service using domain account for app pool identityIIS 7 托管 WCF 服务使用域帐户作为应用程序池标识
【发布时间】:2011-03-16 14:20:06
【问题描述】:

我正在尝试做一些我认为应该非常简单的事情,但我一点运气都没有。我在 IIS 7 中托管了一个简单的 Hello World WCF 服务。该服务使用默认应用程序池运行良好。但是,当我创建一个新的应用程序池并使用域帐户运行该应用程序池时,我在调用该服务时遇到错误。我确定我需要进行配置更改,但是我不知道它们是什么。我得到的错误是

“安全支持提供程序接口 (SSPI) 身份验证失败。服务器可能未在身份为“host/ep2t-ifs01”的帐户中运行。如果服务器在服务帐户(例如网络服务)中运行,请指定帐户的 ServicePrincipalName 作为服务器的 EndpointAddress 中的标识。如果服务器在用户帐户中运行,请将帐户的 UserPrincipalName 指定为服务器的 EndpointAddress 中的标识。"

我对这种类型的安全性不是很了解,所以没有什么建议太简单了。在这一点上的任何帮助将不胜感激。这是我的 web.config 文件中的相关部分:

【问题讨论】:

    标签: wcf iis-7


    【解决方案1】:

    这个问题相当棘手。以下是您可以检查以了解问题的资源列表(按特定顺序):

    最后,您可能需要为您的域帐户创建一个 SPN,该帐户链接到您要部署到的服务器。这需要域管理员权限。更多信息here

    【讨论】:

      【解决方案2】:

      由于某种原因,我的 web.config 部分没有保存...

      <system.serviceModel>
      <behaviors>
        <serviceBehaviors>
          <behavior name="basicServiceBehavior">
            <serviceMetadata httpGetEnabled="True" />
            <serviceDebug includeExceptionDetailInFaults="False" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
      <services>
        <service name="WebSyncPrototypeMVCApp.Service1" behaviorConfiguration="basicServiceBehavior">
          <endpoint address="" binding="wsHttpBinding" contract="WebSyncPrototypeMVCApp.IService1" />
          <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
      </services>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-03
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多