Запуск автономного веб-API OWIN под учетной записью без администрирования
Возможно ли, чтобы автономный веб-API OWIN запускался под учетной записью не администратора? Я уже пробовал десятки резервирований url и ничего не работает. Служба не запускается с "Доступ запрещен". Он работает, когда учетная запись добавляется к роли администратора, но я этого не хочу. Ниже приведен код ниже на 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.");
}
EDIT - это выполняется под учетной записью 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.
Ответы
Ответ 1
Похоже, проблема заключалась в резервировании URL. Мне он не нужен. Если есть резервирование URL-адресов, это просто предотвратит запуск хоста owin с ошибкой отказа доступа. Кроме того, порт по умолчанию для хоста owin - 5000. Если на этом порту все еще запущен "мертвый" процесс, он заблокирует запуск вашего сервиса. Чтобы проверить, что вы можете запустить netstat -a -b
в командной строке.
Ответ 2
Ваша служба работает (скорее всего) в учетной записи LocalSystem (SYSTEM). Эта учетная запись не находится в разделе "Принцип безопасности всех".
Короче говоря, чтобы решить эту проблему, либо сделайте резервирование пространства имен для анонимного входа в систему, либо измените свою службу для запуска в учетной записи службы сети, которая, как оказалось, находится в принципе "Все".
Третий вариант - это, конечно же, создание нового пользователя локального/домена, создание резерва для него и запуск службы под этой учетной записью. Но тогда вам придется беспокоиться о том, чтобы установить для него правильные разрешения безопасности, поэтому я бы воспользовался одним из первых двух вариантов.
Ответ 3
Для кого-то, кто ищет решение и не читает текст.
Решение состоит в том, чтобы запустить Visual Studio от имени администратора.
Ответ 4
Запустите эту командную строку под администратором
netsh http add urlacl url = http://*: 8080/user = MyUser
Ответ 5
Права администратора не требуются для значений порта 5000 и выше