2017-08-25 20 views
0

他のサービスからデータを取得するAPIがあります。WebRequestHandlerのためにAzureにデプロイした後にWebアプリケーションがクラッシュする

if (model.Phone[0] != '+') 
     { 
      model.Phone = "+" + model.Phone; 
     } 

     string data = Newtonsoft.Json.JsonConvert.SerializeObject(new { ID = Guid.NewGuid(), Phone = model.Phone}); 

     if (!string.IsNullOrEmpty(model.Email)) 
     { 
      data = Newtonsoft.Json.JsonConvert.SerializeObject(new { ID = Guid.NewGuid(), Phone = model.Phone, Email = model.Email }); 
     } 

     logger.Debug("GetDataFromSupplier before try"); 

     try 
     { 
      WebRequestHandler handler = new WebRequestHandler(); 
      X509Certificate2 certificate = GetMyX509Certificate(); 
      ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; 
      handler.ClientCertificates.Add(certificate); 
      HttpClient client = new HttpClient(handler); 
      var content = new StringContent(data, Encoding.UTF8, "application/json"); 
      var request = client.PostAsync(API_URL, content); 
      var result = request.Result; 
      return result; 
     } catch (Exception ex) 
     { 
      logger.Debug($"GetDataFromSupplier in catch: {ex.Message}"); 
      var message = new HttpResponseMessage(HttpStatusCode.BadRequest); 
      message.Content = new StringContent(ex.Message); 
      return message; 
     } 

しかし、私はこのコード行にセッション区切りをAZUREするには、このコードを展開した後、次のコードは、ローカルIIS上で素晴らしい作品

WebRequestHandler handler = new WebRequestHandler(); 

クライアントアプリケーションは、502 HTTPエラーを取得します。私はウェブサーバーのRAMを増やそうとしました。キャッチブロックは実行されません。この問題の原因は何ですか?

+0

wiresharkやfiddlerのようなスニファを使うのがベストです。ローカルIISのhttpメッセージと失敗したIISメッセージを比較します。作業用と非作業用のヘッダーを比較する。例外は別のハンドラで捕捉されているか、Windows32のメソッドであり、最後のウィンドウエラーを取得する必要があります。 – jdweng

答えて

0

WebRequestHandler https://msdn.microsoft.com/en-us/library/system.net.http.webrequesthandler(v=vs.110).aspxのドキュメントを参照すると、ここで使用するのに最適なコンポーネントではない場合があります。

おそらく、HttpClientで同じことを試してください。 https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx、WebRequestHandlerはデスクトップアプリケーション用のものです。

あなたはIISに言及して以来、あなたはデスクトップアプリケーションを構築していないと推測しています。

関連する問題