他のサービスからデータを取得する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を増やそうとしました。キャッチブロックは実行されません。この問題の原因は何ですか?
wiresharkやfiddlerのようなスニファを使うのがベストです。ローカルIISのhttpメッセージと失敗したIISメッセージを比較します。作業用と非作業用のヘッダーを比較する。例外は別のハンドラで捕捉されているか、Windows32のメソッドであり、最後のウィンドウエラーを取得する必要があります。 – jdweng