web-dev-qa-db-fra.com

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

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 d'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?

14
Matt W

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

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.

20
btlog
webService.UseDefaultCredentials = true

Cela a fonctionné pour moi.

3
user1772100

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

3
Glade Mellor

vous pouvez utiliser ceci:

webservice.UseDefaultCredentials = true;

Si cela 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 à partir de: clic droit sur "MyComputer" et propriétés le domaine est le nom de l'ordinateur ou le groupe de travail

2
Mohamad Chami

je suis tester de cette façon:

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