IIS 7使用域帐户托管WCF服务以获取应用程序池标识

时间:2011-03-16 14:20:07

标签: wcf iis-7

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

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

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

                                                                                                            

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

由于某种原因,我的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>