我有一個.Net 4.5.2 WebApp調用我的API。當我將我的web應用程序指向我的API的LocalHost版本時,它獲取數據,並返回正常。我發佈了該API,並確認該API與PostMan正常工作。 後來我跑完全相同的Web應用程序代碼,從本地主機只改變URI住API,我也得到由以下的倍數異常錯誤:HttpClient.GetAsync適用於LocalHost API,但不適用於Live API
- 一個現有的連接被強行關閉遠程主機
- 無法從傳輸連接讀取數據:現有連接被遠程主機強制關閉。
- 底層連接已關閉:發送時發生意外錯誤。
- 發送請求時發生錯誤。
這裏是我的調用代碼
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("user", serializedUser);
response = null;
try
{
//Uri uri = new Uri("https://jsonplaceholder.typicode.com/posts/1");//https works
Uri uri = new Uri("https://api.acme.com/values/test");
//Uri uri = new Uri("http://localhost/5000/values/test"); //http localhost works
response = client.GetAsync(uri).Result;
}
catch (Exception e)
{
string er = e.Message;
}
}
編輯1:我創建了一個.NET核心應用從無到有,和我原來的代碼工作完美地叫我的生活API。我的原始代碼也可以在.NET 4.5.2中調用不同的「https」API。
編輯2: 所以這是我在哪裏,現在,我已經從2015年VS創建兩個通用的應用程序,一個是.NET的核心Web應用程序,另一個是.NET框架Web應用程序。我已經在兩個應用程序中使用上述代碼完全相同來調用API。在這兩個應用程序中,我都可以調用我在網上找到的通用「https」api(jsonplaceholder)。我也可以在兩個「http」處調用我的應用程序的本地主機版本。在應用程序的.NET Core版本中,我可以調用我的「https」實時API並獲得我正在查找的結果。在.NET Framework應用程序中,我仍然遇到相同的錯誤。
我不明白我的核心和框架請求之間有什麼區別,當另一個沒有時關閉。
不是我的區域,但我懷疑它與你從http更改爲https有關。看看這篇文章是否有幫助:[使用HttpClient進行Https調用](http://stackoverflow.com/questions/22251689/make-https-call-using-httpclient)。 – TnTinMn
你永遠不應該發佈代碼的截圖,你應該把代碼放在你的問題中,然後在網站的編輯器中使用「{}」進行格式化。這樣可以更好地搜索未來的訪問者。 –
@ScottChamberlain修復它。 –