13

我想在窗口服务中托管 wcf。我之前做过几次,没有任何问题。这次在我安装了服务并单击开始后,我在 EventViewer 中收到以下错误。

Service cannot be started. System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:.../.../. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).

当我在 ConsoleApplication 上托管相同的服务时,相同的地址 - 好的。

我在这里这里看到了问题,但没有一个解决方案对我有帮助。

有人有想法吗?

4

2 回答 2

17

至于你的答案,那是一个霰弹枪调试。您现在拥有具有管理员权限的网络服务:

本地系统帐户(Windows)

LocalSystem 帐户 [...] 在本地计算机上具有广泛的权限,并充当网络上的计算机。它的令牌包括 NT AUTHORITY\SYSTEM 和 BUILTIN\Administrators SID;这些帐户可以访问大多数系统对象。

大多数服务不需要如此高的特权级别。如果您的服务不需要这些权限,并且它不是交互式服务,请考虑使用 LocalService 帐户或 NetworkService 帐户。有关详细信息,请参阅服务安全和访问权限。

因此,您最好将此服务作为 NetworkService 运行,并按照配置 HTTP 和 HTTPS中的说明授予它使用您尝试使用的端口的适当权限:

netsh http add urlacl url=http://+:80/MyUri user="NT AUTHORITY\NETWORK SERVICE"
于 2012-12-16T14:17:03.730 回答
7

我发现将安装程序帐户更改为 LocalSystem 完成了这项工作:-)

于 2012-12-16T14:04:40.423 回答