【问题标题】:WCF service hosted with User in IIS WPG group?由 IIS WPG 组中的用户托管的 WCF 服务?
【发布时间】:2012-08-28 10:43:12
【问题描述】:

我使用自定义 AppPool 在 IIS 6 上托管 WCF 服务。此 AppPool 配置为在 IIS_WPG 组中的用户下运行。

我可以从远程位置访问服务,也可以看到 wsdl,但是当我尝试通过“WCF 测试客户端”访问相同的服务时,出现以下错误

更新:当我通过将 AppPool 的身份更改为“网络服务”组来运行相同的服务时,可以通过测试客户端访问服务。 因此,只有当服务以“网络服务”(用户的默认身份)以外的身份运行时,才能访问服务元数据

【问题讨论】:

  • 查看这个问题的答案:stackoverflow.com/questions/5199541/… 您的服务似乎缺少它的元数据 (mex) 端点。
  • Coral, mex 端点从未在服务配置中定义。问题略有不同,仅当服务以自定义用户身份而不是“网络服务”运行时才会发生。
  • 自定义用户身份对服务运行所需的所有文件拥有权限?包括来自 wwwroot 和证书的文件(如果您添加了安全性)?

标签: wcf wcftestclient


【解决方案1】:

我过去遇到过这个问题,解决方案是在客户端和托管服务的服务器之间使用服务帐户进行身份验证。

【讨论】:

    【解决方案2】:

    我遇到了与上述相同的问题。以下是我在寻找解决此问题的方法时所做的事情。

    我将开始我的 WCF 到 IIS6 的部署过程。

    1. 在服务器中创建一个文件夹并复制 WCF 包。
    2. 为您的 WCF 创建一个 AppPool。
    3. 右键单击新创建的 AppPool,选择 Properties,然后转到 Identity 选项卡。选择“可配置”,然后输入您的服务帐户凭据而不是 NETWORK SERVICE。
    4. 我没有创建新网站。就我而言,我在默认网站下创建了一个虚拟目录,并将其指向我复制的 WCF 文件夹。
    5. 创建虚拟目录后,右键单击它,然后选择属性。以下是每个选项卡的设置

      虚拟目录标签

      • 点击创建按钮创建应用名称。
      • 在执行权限中选择“仅脚本”。
      • 选择您创建的 AppPool。
      • 点击应用按钮保存更改。

      文档选项卡

      • 添加新内容 - WCF .svc 文件的名称。
      • 点击应用按钮保存更改。

      目录安全选项卡

      • 单击身份验证和访问控制中的编辑按钮。
      • 使用您的服务帐户凭据更改用户名和密码。
      • 点击确定(如需再次确认,请再次输入密码)。
      • 点击应用按钮保存更改。

      ASP.Net 选项卡

      • 选择4.0.30319版本(如果需要.net framework 4.0)
      • 点击应用按钮保存更改。
    6. 现在,转到计算机管理 > 系统工具 > 本地用户和组 > 组

    7. 打开 IIS_WPG 组并添加您的服务帐户。

    8. 然后转到开始 > 管理工具 > 本地安全策略

    9. 展开安全设置 > 本地策略 > 用户权限分配。搜索作为服务登录,然后在此处添加您的服务帐户。

    10. 最后,转到 C:\WINDOWS\Temp 文件夹。右键单击它,然后选择属性。单击安全选项卡,然后添加您的服务帐户。

    11. 要设置特殊权限,请单击高级按钮。

    12. 选择您的服务帐户,然后单击编辑按钮。在权限列表中,仅勾选或选中“列出文件夹/读取数据”和“删除”权限。单击确定并应用按钮以应用更改。如果消息框提示您,请单击“是”以应用于子文件夹。

    13. 现在,最后一刻。确保应用程序池正在运行。在浏览器中测试 WCF,然后在 WCF 测试客户端中测试。

      1. 就我而言,它运行良好,非常完美:)

    希望对你有所帮助...

    【讨论】:

      猜你喜欢
      • 2022-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      相关资源
      最近更新 更多