WCF 服务主机访问权限

Posted

技术标签:

【中文标题】WCF 服务主机访问权限【英文标题】:WCF ServiceHost access rights 【发布时间】:2010-10-27 12:15:02 【问题描述】:

阅读 WCF 教程时出现以下错误。

HTTP 无法注册 URL http://+:8000/ServiceModelSamples/Service/。您的进程无权访问此命名空间(详情请参阅http://go.microsoft.com/fwlink/?LinkId=70353)。

这是由 Windows 7 的限制引起的吗?

【问题讨论】:

你可以在这个blog上找到很多有用的信息。 Hey 还提供了一个不错的 GUI 工具。 HTTP could not register URL http://+:8000/HelloWCF/. Your process does not have access rights to this namespace的可能重复 【参考方案1】:

问题是该 URL 被 Windows 阻止创建。

修复步骤: 以管理员身份运行命令提示符。 将 URL 添加到 ACL

netsh http add urlacl url=http://+:8000/ServiceModelSamples/Service user=mylocaluser

【讨论】:

很高兴你解决了这个问题。 “+”是什么意思? 我有一种预感,它意味着一个通用的本地 IP。 注意:您几乎必须准确输入 url=http://+:port/path。 url=address:port/path 对我不起作用,就像您认为的那样。另请注意,您必须将网络服务器用作您的用户(“NT AUTHORITY\NETWORK SERVICE”,如果这是您的服务安装程序设置的内容。 有什么方法可以在不需要管理员权限的情况下做到这一点? 为用户使用我的帐户无效。与 user=Everyone 合作【参考方案2】:

如果您通过 IDE 运行,以管理员身份运行应该会有所帮助。为此,请找到 Visual Studio 2008/10 应用程序图标,右键单击它并选择“以管理员身份运行”

【讨论】:

并不是一个“更好”的解决方案@Liam - 在公司设置中的开发环境中的管理员权限可以为您提供更多权限来做危险的事情。一个更简单的解决方案,当然,但权力带来责任...... 原始解决方案还需要以管理员身份执行 - 授予的时间较短,当然您需要从安全上下文中了解自己在做什么。 那么,无论如何要在没有管理员权限的情况下执行此操作? 完美。我正在从 IDE 运行一个程序,该程序需要在另一台机器上注册一个 URL 并以管理员身份运行。【参考方案3】:

另一种解决方案是使用地址

http://localhost:8732/Design_Time_Addresses/YOUR_ADDRESS.

.NET Framework (3.5) 自动注册此地址 (http://*:8732/Design_Time_Addresses) 用于调试范围。当您需要在 Visual Studio 中托管服务以进行调试或测试时,这很有用。不要在生产中使用它...

【讨论】:

有些网站使用的是 8731 端口而不是 8732。 @DaviFiamenghi 只要安装了 .net 3.5,它就可以工作。但我从未尝试过。通常我认为这样的测试是集成测试,所以我不在 TFS 上运行它,我只在 TFS 上运行单元测试。 @NenadDobrilovic 矿山使用 8733 :)。但这并不重要。 我们的服务器正在使用localhost:8733/Design_Time_Addresses,如果没有您的回答,我永远不会知道要查找它,谢谢。此外,Bob's tool 显示了所有被许可的地址 - 这就是我发现它是 8733 的原因。谢谢【参考方案4】:

以管理员身份打开命令提示符,然后编写以下命令来添加您的 URL:

netsh http add urlacl url=http://+:8000/YourServiceLibrary/YourService user=Everyone

【讨论】:

【参考方案5】:

以管理员身份打开 Visual Studio.. 它会运行。

【讨论】:

我在使用 nunit-gui 时遇到了同样的问题。以管理员身份运行,一切顺利。 我与 2013 年有同样的问题,并且以管理员身份运行不起作用 为什么我需要管理员 为什么我不能以标准用户身份运行?【参考方案6】:

其他可行的选项是..,

如果你改变了应用池的de indentity,你就可以运行代码了,思路是把应用池执行账号换成一个拥有更多权限的账号,

欲了解更多详情,请使用此博客

https://letrasandnumeros.com/2017/11/27/http-could-not-register-url-http-80-hellowcf-your-process-does-not-have-access-rights-to-this-namespace/

【讨论】:

【参考方案7】:

我正在使用 Windows Vista。即使我也遇到了同样的问题,但是当我尝试使用管理权限运行 VS 2008 时,问题已解决,我的服务已启动并正在运行。 :)

【讨论】:

【参考方案8】:

以管理员身份运行 Visual Studio 可以解决此问题,但如果您将 Visual Studio 与 TortoiseSVN 一起使用,则无法提交任何更改。另一种可能的解决方案是以管理员身份运行服务,其余的 Visual Studio 作为本地用户运行。

【讨论】:

【参考方案9】:

请在管理模式下打开您的 Visual Studio,然后试一试。

【讨论】:

【参考方案10】:

请以管理员身份打开您的 Visual Studio:

【讨论】:

以上是关于WCF 服务主机访问权限的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务访问权限:没有对此命名空间的访问权限

WCF 休息服务 - 获得对 HTTP 响应标头的访问权限

在 WCF Restful 服务中访问属性“应用”的权限被拒绝

单元测试 WCF 服务时,AddressAccessDeniedException“您的进程没有访问此命名空间的权限”

Windows 7 上的 WCF 服务 URL ACL:您的进程没有对此命名空间的访问权限

检查权限的最佳位置在哪里?