在Windows服务权限上自托管web api

时间:2015-11-23 08:11:16

标签: c# asp.net-web-api permissions windows-services self-hosting

我在我的Windows服务中托管Web Api,我在从Windows服务启动Web Api服务时出现问题,这是我调试它时遇到的异常:

  

发生System.AggregateException HResult = -2146233088消息=发生了一个或多个错误。 Source = mscorlib StackTrace:          .... InnerException:          的HResult = -2146233087          Message = HTTP无法注册URL http://+:1243/。您的进程没有此命名空间的访问权限(请参阅   http://go.microsoft.com/fwlink/?LinkId=70353了解详情)。          来源= System.ServiceModel.Internals          ......

如果我在控制台应用程序中托管相同的Web服务,一切正常。如何设置Windows服务的权限以启动Web服务?

提前致谢...

1 个答案:

答案 0 :(得分:1)

与IIS下的托管(为您处理此问题)不同,当自托管时,您需要为正在监听的URL创建ACL,对于您正在运行的用户。像这样的东西(来自特权命令行): -

netsh http add urlacl http://+:1234/ user=LocalService

我没有专门针对LocalService尝试过上述内容,但是在侦听localhost以外的任何内容时都需要这样做。

更多可用信息here