Pregunta Ejecución de la API web de OWIN alojada en una cuenta que no es de administrador


¿Es posible que una API web de OWIN alojada en uno mismo se ejecute en una cuenta que no sea de administrador? Ya he probado docenas de reservas de URL y nada funciona. El servicio no puede comenzar con "Acceso denegado". Funciona cuando la cuenta se agrega a la función de administrador, pero no quiero eso. El siguiente código se ejecuta en 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.");
}

EDITAR - Esto se ejecuta bajo una cuenta de 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.

32
2017-07-26 23:23


origen


Respuestas:


Parece que el problema fue con la reserva de URL. No lo necesitaba. Si hay una reserva de URL, solo evitará que el host owin comience con el error de acceso denegado. Además, el puerto predeterminado para el host owin es 5000. Si hay un proceso "muerto" que todavía se está ejecutando en ese puerto, bloqueará el inicio de su servicio. Para verificar puedes ejecutar netstat -a -b en el símbolo del sistema.


13
2017-08-03 00:19



Su servicio se está ejecutando (muy probablemente) en la cuenta LocalSystem (SYSTEM). Esta cuenta no se encuentra en el principal de seguridad Everyone.

En resumen, para resolver esto, haga la reserva del espacio de nombres para el inicio de sesión anónimo o cambie su servicio para que se ejecute en la cuenta del servicio de red que se encuentra en el principal de Todos.

La tercera opción es, por supuesto, crear un nuevo usuario local / de dominio, crear la reserva para él y hacer que el servicio se ejecute bajo esta cuenta. Pero entonces tendría que preocuparse por establecer los permisos de seguridad adecuados para él, así que iría con una de las dos primeras opciones.


5
2017-07-26 23:45



Los derechos de administrador no son necesarios para valores de puerto de 5000 o más


-1
2017-08-08 22:24