L'exécution de l'auto-hébergé OWIN Web API en vertu de la non-compte admin
Est-il possible pour un auto-hébergé OWIN Web API pour s'exécuter sous un compte non-administrateur? J'ai déjà essayé des dizaines de réservations d'url et rien ne fonctionne. Le service ne parvient pas à démarrer avec "Accès refusé". Il fonctionne lorsque le compte est ajouté au rôle d'administrateur, mais je n'en veux pas. Le Code ci-dessous est en cours d'exécution sur 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.");
}
MODIFIER - ce qui s'exécute sous un compte 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.
- Mon service fonctionne très bien sous "Service Local" compte. Quand je suis passé à "Service Réseau" j'ai commencé à avoir accès refusé. Essayé beaucoup de différentes options de la commande netsh http ajoutez urlacl avec un signe " + " - rien n'a fonctionné. Seulement quand je suis passé de "+" à", " de la sorte: netsh http ajoutez urlacl url=http://:80/tms utilisateur="NT AUTHORITY\Network Service", fait-il enfin travailler! Quelqu'un sait la différence entre les "*" et le "+" dans ce contexte?
Vous devez vous connecter pour publier un commentaire.
Il semble que le problème était avec la réservation d'URL. Je n'ai pas besoin. Si il y a une URL de réservation, il suffit de prévenir le owin hôte de commencer par l'erreur d'accès refusé. Aussi, le port par défaut pour owin d'accueil est de 5 000. Si il y a une "mort" processus qui est toujours en cours d'exécution sur ce port, il permet de bloquer votre démarrage du service. Pour vérifier que vous pouvez exécuter
netstat -a -b
à l'invite de commande.netsh http add urlacl url=http://*:1981/ user=MyUser
url=http://localhost:1981/
Votre service est en cours d'exécution (le plus probable) sous le système local (SYSTÈME) compte. Ce compte n'est pas dans tout le monde principal de sécurité.
En bref, pour résoudre ce problème, faites-en l'espace de noms de réservation pour l'ouverture de session Anonyme ou modifier votre service pour s'exécuter sous le compte Service Réseau qui se trouve être dans l'entité tout le monde.
Troisième option est, bien sûr, pour créer un nouveau local/d'utilisateur de domaine, créer de la réservation et le service s'exécuter sous ce compte. Mais alors, vous devriez vous inquiéter à propos de la configuration correcte des autorisations de sécurité pour elle, donc j'irais avec l'une des deux premières options.
Pour quelqu'un qui est à la recherche d'une solution et n'a pas lu le texte.
La solution consiste à exécuter visual studio en tant qu'administrateur.
Exécuter cette ligne de commande sous admin
Des droits d'administrateur ne sont pas nécessaires pour les valeurs de port 5000 et plus