2012-08-28 103 views
2

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

我可以从远程位置访问该服务,可以看到WSDL为好,但是当我试图通过“WCF测试客户端”访问相同的服务,我得到了以下错误

enter image description here

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

+0

检查这个问题的答案:HTTP ://stackoverflow.com/questions/5199541/failed-to-add-a-service-service-metadata-may-not-be-accessible-make-sure-your看来你的服务缺少它的元数据(mex)端点。 –

+0

珊瑚,mex端点从未在服务配置中定义。问题稍有不同,只有服务在自定义用户身份下运行时才会发生,而不是“网络服务”。 – Nexus23

+0

自定义用户标识对服务运行所需的所有文件拥有权限?包括来自wwwroot和证书的文件(如果你已经增加了安全性)? –

回答

1

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

0

我有同样的问题,如上所述..这是我找到解决这个问题时所做的事情。

我将开始将WCF的部署过程传递给IIS6。

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

    虚拟目录选项卡

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

    单据选项卡

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

    目录安全性选项卡

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

    ASP.Net标签

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

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

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

  9. 展开安全设置>本地策略>用户权利指派。搜索作为服务登录,然后在那里添加您的服务帐户。

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

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

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

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

  14. 在我的情况下,它的工作,完美:)

希望这将帮助你...