Col*_*dog 41 .net c# asp.net-web-api owin
自托管OWIN Web API是否可以在非管理员帐户下运行?我已经尝试了几十个网址预订,没有任何作用.该服务无法以"访问被拒绝"开头.当帐户添加到管理员角色但我不想要它时,它可以工作.下面的代码在Win 7 framework 4.5.2上运行.
//install-package microsoft.owin.hosting
//install-package Microsoft.Owin.Host.HttpListener
StartOptions options = new StartOptions();
options.Urls.Add("http://localhost:5000/");
//options.Urls.Add(string.Format("http://{0}:5000", Environment.MachineName));
//options.Urls.Add("http://+:5000/");
//options.Urls.Add("http://*:5000/");
using (WebApp.Start<WebAPISelfHostMinimal.Startup>(options))
{
while (!Terminate)
{
await Task.Delay(10); //keep cpu from getting pegged
}
LogUtil.LogInfo("Terminating owin host.");
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 这是在Windows帐户下运行.
C:\>netsh http add urlacl http://+:5000/ user=mini2012\svcAPI
URL reservation successfully added
C:\>sc start apiservice
[SC] StartService FAILED 5:
Access is denied.
C:\>netsh http add urlacl http://*:5000/ user=mini2012\svcAPI
URL reservation successfully added
C:\>sc start apiservice
[SC] StartService FAILED 5:
Access is denied.
C:\>netsh http add urlacl http://localhost:5000/ user=mini2012\svcAPI
URL reservation successfully added
C:\>sc start apiservice
[SC] StartService FAILED 5:
Access is denied.
Run Code Online (Sandbox Code Playgroud)
Col*_*dog 17
看起来问题出在URL保留上.我不需要一个.如果存在URL保留,则只会阻止owin主机以拒绝访问错误启动.此外,owin主机的默认端口是5000.如果仍有一个"死"进程仍在该端口上运行,它将阻止您的服务启动.要检查您是否可以netstat -a -b在命令提示符下运行.
您的服务正在(很可能)在LocalSystem(SYSTEM)帐户下运行.此帐户不在Everyone安全主体中.
简而言之,要解决此问题,请为匿名登录进行命名空间预留,或者将您的服务更改为在恰好位于Everyone主体中的网络服务帐户下运行.
当然,第三个选项是创建新的本地/域用户,为其创建预留并在此帐户下运行服务.但是你必须担心为它设置适当的安全权限,所以我会选择前两个选项之一.
| 归档时间: |
|
| 查看次数: |
30338 次 |
| 最近记录: |