有一個項目,在后台通過httpclient調用其他服務接口,該服務中會進行較復雜的計算,計算時長超過2分鍾;在本地調試的時候,一切OK,但是部署到服務器,掛在IIS上后,
只要一調用該接口,計算完之后直接502錯誤(后台中添加日志檢測邏輯是計算完成的:偶爾會出現計算未完成的情況),然后瘋狂在網上看看有沒有解決方案:
1、HttpClient _client = new HttpClient() 使用 using語法 或使用全局靜態
2、_client.PostAsync(requestAddress, byteContent).Result 改為 await _client.PostAsync(requestAddress, byteContent)
3、_client.Timeout = TimeSpan.FromMinutes(30);
4、Program中配置超時時長:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>().UseKestrel(option => { option.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30); option.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(30); }).UseUrls("http://*:8804"); });
5、修改IIS並發進程數,1改為8
等等以上都沒有效果,查看系統日志等等,也沒有記錄;看服務器的性能參數、線程等,也沒有存在調用時飆升的情況。。。。。啊啊,哪位大佬碰到過麻煩指導一下;
實在沒轍,因為是.netcore 代碼嘛,可以不依賴與IIS,我直接運行exe啟動,結果,可以了!!!蛋碎了一地,難道是IIS的問題???留待大佬解惑~
好在,問題暫時得到解決了,記錄一下。