Je suis un débutant en WCF, mais j'essaie d'améliorer mon expérience. Et lors de la première étape, j'ai fait face au problème. J'ai créé le service WCF le plus simple. La liste du code: (tout le code dans un seul fichier)
using System;
using System.ServiceModel;
namespace EssentialWCF
{
[ServiceContract]
public interface IStockService
{
[OperationContract]
double GetPrice(string ticker);
}
public class StockService : IStockService
{
public double GetPrice(string ticker)
{
return 94.85;
}
}
class Service
{
static void Main(string[] args)
{
ServiceHost serviceHost = new ServiceHost(typeof(StockService),
new Uri("http://localhost:8000/HelloWCF"));
serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
serviceHost.Open();
Console.WriteLine("To continue press ENTER");
serviceHost.Close();
}
}
}
Ce serait le service qui me donnerait un numéro via la console. Mais le débogage me donne l'exception: (au lieu du nombre :))
HTTP n'a pas pu enregistrer l'URL http: // +: 8000 / HelloWCF / . Votre processus ne dispose pas des droits d’accès à cet espace de noms (voir http://go.microsoft.com/fwlink/?LinkId=70353 pour plus de détails).
Avez-vous déjà fait face à la même situation? Je serai heureux de voir tous les conseils.
Réponses:
Malheureusement, le lien dans le texte d'exception, http://go.microsoft.com/fwlink/?LinkId=70353 , est rompu. Cependant, il conduisait à http://msdn.microsoft.com/en-us/library/ms733768.aspx qui explique comment définir les autorisations.
Il vous informe essentiellement d'utiliser la commande suivante:
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
Vous pouvez obtenir plus d'aide sur les détails à l'aide de
netsh
Par exemple:
netsh http add ?
Donne de l'aide sur la
http add
commande.la source
COMPUTER_NAME\USER_NAME
la commande ci-dessus.netsh http add urlacl url=http://+:80/ user=DOMAIN\user
si vous souhaitez donner au compte des droits d'accès à tous les espaces de noms sur le port.J'ai fermé l'IDE de Visual studio et l'ai rouvert en faisant un clic droit sur l'icône de Visual Studio et en disant "Exécuter en tant qu'administrateur", puis quand j'ai exécuté l'hôte, cela a fonctionné !!!
la source
Cliquez avec le bouton droit sur Visual Studio> Exécuter en tant qu'administrateur> Ouvrez votre projet et exécutez le service. Il s'agit d'un problème lié aux privilèges.
la source
Vous avez besoin d'un privilège d'administrateur sur votre compte si votre machine est dans le réseau local, puis vous appliquez un privilège d'administrateur à votre utilisateur sinon vous devez démarrer ide en tant qu'administrateur ...
la source
La chose simple que vous devez faire est de fermer votre environnement Visual Studio et de l'ouvrir à nouveau en utilisant «Exécuter en tant qu'administrateur». Il devrait maintenant fonctionner correctement.
la source
Dans Windows Vista et les versions ultérieures, le service HTTP WCF entraînerait l'exception que vous avez mentionnée car un compte restreint n'a pas le droit pour cela. C'est la raison pour laquelle cela a fonctionné lorsque vous l'avez exécuté en tant qu'administrateur.
Chaque développeur sensé doit utiliser un compte RESTRICTED plutôt qu'en tant qu'administrateur, mais beaucoup de gens se trompent et c'est précisément pourquoi il existe tant d'applications qui DEMANDENT des autorisations d'administrateur lorsqu'elles ne sont pas vraiment nécessaires. Travailler de manière paresseuse aboutit à des solutions paresseuses. J'espère que vous travaillez toujours dans un compte restreint (mes félicitations).
Il existe un outil (à partir de 2008 environ) appelé NamespaceManagerTool si je me souviens bien, qui est censé accorder les autorisations utilisateur restreintes sur ces URL de service que vous définissez pour WCF. Je ne l'ai pas utilisé cependant ...
la source
Votre exemple de code ne fonctionnera pas comme indiqué car vous avez oublié d'inclure un
Console.ReadLine()
avant laserviceHost.Close()
ligne. Cela signifie que l'hôte est ouvert puis immédiatement fermé.En dehors de cela, il semble que vous ayez un problème d'autorisation sur votre machine. Assurez-vous que vous êtes connecté en tant que compte administrateur sur votre machine. Si vous êtes un administrateur, il se peut que le service de publication World Wide Web (W3SVC) ne soit pas en cours d'exécution pour gérer les requêtes HTTP.
la source
Bien que j'aie pu résoudre ce problème sur un ordinateur en suivant les solutions des autres utilisateurs, la commande
netsh
n'a pas résolu le problème sur l'une de mes machines et même si l'utilisateur actuel avait des droits d'administrateur, j'obtenais toujours le message "HTTP ne pouvait pas enregistrer l'URL .... Votre processus n'a pas de droits d'accès à cet espace de noms ". Je partage donc ma solution au cas où vous ne la feriez toujours pas fonctionner avec les autres solutions.Après avoir également essayé d'accorder des autorisations d'écriture à l'utilisateur dans le répertoire physique de mon site Web sans succès, j'ai finalement décidé d'essayer de modifier les paramètres IIS. .
Comme le montrent les images ci-dessous, j'ai configuré les informations d' identification du chemin physique de mon site Web pour se connecter en tant qu'utilisateur spécifique, qui était un compte administrateur avec DOMAINE \ nom d'utilisateur et mot de passe, et cela a suffi à faire disparaître l'erreur.
la source
Fermez iis express et tous les navigateurs (si l'URL a été ouverte dans l'un des navigateurs). Ouvrez également l'IDE de Visual Studio en mode administrateur. Cela a résolu mon problème.
la source