2

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

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

在此处输入图像描述

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

4

2 回答 2

1

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

于 2014-01-13T22:07:40.030 回答
0

我有与上述相同的问题。这是我在寻找解决此问题的方法时所做的事情。

我将开始将 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. 就我而言,它正在完美地工作:)

希望对你有帮助...

于 2014-12-26T09:43:07.110 回答