[C#]problème web services erreur HTTP 401

Résolu/Fermé
chico95 - 7 oct. 2011 à 10:13
 chico95 - 7 oct. 2011 à 11:00
Bonjour à tous,

Voila je viens de commencer en ASP.net avec C# et j'ai déjà un petit soucis.
En effet, je dois utiliser des webservices codés par quelqu'un d'autre, voila mon code C# :



GetInvoices.CSD_get_salesInvoiceData inv = new GetInvoices.CSD_get_salesInvoiceData();
            try
            {                
                GetInvoices.results res = inv.CSD_get_BW_BW_QRY_ODS_FI01_0003("0002010689", "", "", "22052011", "28062011", "", "");
                GetInvoices.resultsItem[] tab = res.resultsItem;
                for (int i = 0; i < tab.Length; i++)
                {
                    lbl_invoiceNum.Text = tab[i].AC_DOC_NO;
                }
            }
            catch (Exception e)
            {
                throw (e);
            }



Mais lorsque le debug arrive sur la ligne en gras, il saute directement dans le catch avec cette erreur :


L'exception WebException n'a pas été gérée par le code utilisateur.
La demande a échoué avec l'état HTTP 401 : Invalid Session ID or Session Expired.


Et après j'ai ce joli message sur ma page web :


La demande a échoué avec l'état HTTP 401 : Invalid Session ID or Session Expired.
Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.Net.WebException: La demande a échoué avec l'état HTTP 401 : Invalid Session ID or Session Expired.



Pour info je suis Microsoft visual Web developper 2010 express et je tourne avec IIS 5.1.
J'ai regardé un peu sur internet et apparemment c'est une erreur de droit ou quelque chose comme ça mais je ne trouve pas comment le résoudre.


Merci de votre aide !
Chico95




1 réponse

En faite c'était tout bête, j'ai trouvé la réponse moi-même, il s'agissait bien d'erreur d'authentification du coté serveur.

Pour accéder à un web service, il faut y être autoriser puis avoir un login et un mdp.

Donc c'est simple, on autorise sur IIS le IUSR à accéder au webservices, puis dans le code C# on ajoute :

using System.Net;
using System.Web.Services.Protocols;


Et donc dans la fonction qui appel les webservices, l'authentification se fait comme-ci :


GetInvoices.CSD_get_salesInvoiceData inv = new GetInvoices.CSD_get_salesInvoiceData();
            ICredentials credentials = new NetworkCredential("login","***mdp***");
            inv.Credentials = credentials;





Chico95
-1