Подтвердить что ты не робот

Запуск автономного веб-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.
4b9b3361

Ответ 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 и выше