Partage
  • Partager sur Facebook
  • Partager sur Twitter

.NET Core 2.2, Erreur 502 sur HttpWebRequest

Sujet résolu
    5 juillet 2019 à 14:56:53

    Bonjour, 

    Je rencontre un petit problème du un appel HttpWebRequest dans une app .net core 2.2. Voila le contexte: 

    Je développe une petite web app me permettant d'extraire sous format exel des rapports stocké sur un serveur SSRS Reporting Services. Pour cela, il suffit d'appeler mon server ssrs sur une url précise  du type https://monserveur/reportsserver/liensversmonrapport/param  (dans un navigateur, cela télécharge le rapport sous format excel). 

    Mon idée est d'utiliser un objet HttpWebRequest, de récupérer un Stream puis d'enregistrer ce stream sous forme de fichier excel. Je sais que cela fonctionne car j'ai exactement le même code dans une ancienne version de ma web app développé non pas en net core mais en en asp .net 4.6 . 

    Le problème que je rencontre est le suivant: uniquement lorsque mon app est déployée dans IIS (et donc pas en debug dans visuals studio), j'obtiens à chaque fois une erreur 502, mais je récupère tout de même mon fichier excel. Voici mon code: 

     HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(urlPattern);
    
                string domaine = login.USR.Split("\\")[0];
                string usr = login.USR.Split("\\")[1];
    
                Req.Credentials = new NetworkCredential(usr, login.PWD, domaine);
                Req.Method = WebRequestMethods.Http.Get; ;
                Req.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";
    
                Req.KeepAlive = false;
                Req.Timeout = -1;
                Req.AllowAutoRedirect = false;
    
                AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
                WebResponse objResponse = Req.GetResponse();
    
                string path = "C:\\WebApp\\Extract\\Work\\" + allDetails[0].REPORT_ABONNEMENT_ID.ToString() + ".xlsx";
    
                using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite, 4096, false))
                {
                    Stream stream = objResponse.GetResponseStream();
                    stream.CopyTo(fs);
                    stream.Close();
                    stream.Dispose();
                }
    
                objResponse.Close();
                objResponse.Dispose();


    Avez vous une idée ? 

    Merci 

    • Partager sur Facebook
    • Partager sur Twitter
      8 juillet 2019 à 15:12:28

      Utilisez un sniffer réseau comme Wireshark pour avoir plus d'information.

      P.S.; on peut très bien déboguer avec IIS, il faut juste s'attacher au bon process.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        9 juillet 2019 à 11:43:58

        Bonjour, 

        Oui j'ai tenté de déboguer IIS, mais je n'est pas encore trouver le bon process à attacher dans visual studio. Je vais tenter Wireshark cependant, merci ! 

        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2019 à 17:08:20

          Bonjour, 

          J'ai donc fini par résoudre mon problème. Pour une raison que je n'explique pas, le Timeout défini au niveau de l'objet HttpWebRequest ne suffit pas. J'ai du modifier le TimeOut au niveau de IIS également. Il m'a donc suffit d'ajouter ceci dans mon webconfig: 

            <system.web>

              <httpRuntime executionTimeout="900" />

            </system.web>

          Je marque donc le sujet comme résolu, merci ! 

          • Partager sur Facebook
          • Partager sur Twitter

          .NET Core 2.2, Erreur 502 sur HttpWebRequest

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown