/ / La requête a échoué avec le statut HTTP 401: Non autorisé - services Web, http-status-code-401, .net-3.5

La requête a échoué avec le statut HTTP 401: non autorisé - services Web, http-status-code-401, .net-3.5

J'ai un site Web .NET 2.0 (VB) sous IIS6 (XP Pro SP2) et un .NET 3.5 (configuré en tant que .NET2 sous l'onglet ASP.NET de IIS, bien sûr) hébergeant un service Web ASMX.

Dans Chrome, je peux appeler ASMX et invoquer les méthodes Web avec succès. Cependant, en appelant les méthodes Web en code, à partir du site Web .NET 2.0, je reçois:

La requête a échoué avec le statut HTTP 401: non autorisé.

Comment puis-je contourner cela?

Réponses:

19 pour la réponse № 1

Vous devez définir les informations d'identification dans votre application lorsque vous initialisez le webService objet.

Quelque chose comme webService.UseDefaultCredentials = true

Cela définira les informations d'identification de la demande auprès de l'utilisateur en cours d'exécution de l'application.


3 pour la réponse № 2
webService.UseDefaultCredentials = true

Cela a fonctionné pour moi.


2 pour la réponse № 3

Dans IIS 7, activez l'authentification anonyme et vous devriez pouvoir déboguer.


2 pour la réponse № 4

vous pouvez utiliser ceci:

webservice.UseDefaultCredentials = true;

si ne fonctionne pas, utilisez le code ci-dessous au lieu du code ci-dessus

webservice.Credentials = new NetworkCredential("userName", "password", "domain");
webservice.PreAuthenticate = true;

remarque: le nom d'utilisateur Mot de passe et domaine sont les informations d'identification de l'utilisateur ayant accès au service Web.

alors assurez-vous que l'utilisateur est autorisé à accéder au service Web

peut-être que l'utilisateur est l'utilisateur Windows

et vous pouvez obtenir le domaine de: clic droit dans "MyComputer" et propriétés le domaine est le nom de l'ordinateur ou le groupe de travail


0 pour la réponse № 5

Je suis tester de cette façon:

CheckListService.CheckList chkSrvice = new CheckListService.CheckList() {
UseDefaultCredentials = true };