簡體   English   中英

C#發布請求中斷

[英]C# Post requests got broken

我有一個程序,可以發出Post請求。 該項目運行良好,但是使用舊版本的.NETCORE (1.1),我已將所有內容(包括框架)升級到2.1 從未更改過代碼,因此沒有錯誤發生,並且看起來可以更改。

現在,我的發帖請求失敗了(我將僅附加一個,但我有大約4個發帖請求,每個人都出於相同的原因而失敗)

編輯:我也測試了我的Get請求,產生相同的錯誤..

這是我的代碼:

using (var client = new HttpClient())
{
    Field fld = new Field()
    {
        ...
   };
    ForJSON bodyFormat = new ForJSON()
    {
        ...
    };
    string output = JsonConvert.SerializeObject(bodyFormat);
    StringContent sc = new StringContent(output, Encoding.UTF8, "application/json");
    try
    {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                                                                                            Convert.ToBase64String(
                                                                                            Encoding.ASCII.GetBytes(
                                                                                                                                       string.Format("{0}:{1}", "XX", "YY"))));
        response = await client.PostAsync("https:...", sc); // It fails here

錯誤消息是:

嘗試失敗,因為一段時間后連接方未正確響應,或者建立的連接失敗,因為連接的主機未能響應

我已經嘗試過搜索該錯誤,但是對我來說似乎並不是每篇文章都涉及。.他們在談論權限防火牆和端口,但是為什么它在一個項目中起作用而在另一個項目中不起作用?

如果我嘗試通過Postman / 1.1版本的項目備份,那么它將起作用。

為什么會這樣呢? 什么壞了? 是否可能需要添加超時屬性?

嘗試失敗,因為一段時間后連接方未正確響應,或者建立的連接失敗,因為連接的主機未能響應

該誤差,它是由改變鐵芯1.1和2.1芯那之間引起HttpClientHandler從改變WinHttpHandlerSocketsHttpHandler

要解決此問題,您可以嘗試將進程配置為使用較舊的HttpClientHandler

AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
using (var client = new HttpClient())

參考: 網絡性能

錯誤跟蹤: 使用Windows身份驗證的.NET Core 2.1 SocketsHttpHandler代理身份驗證已損壞#30166

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM