web-dev-qa-db-ja.com

C#System.Net.WebException:基礎となる接続が閉じられました:送信時に予期しないエラーが発生しました

Windows Server 2003を実行している1つのサーバーでこのエラーが発生しています。

System.Net.WebException:基礎となる接続が閉じられました:送信時に予期しないエラーが発生しました。


これが私のコードです...アイデアはありますか?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https:// URL HERE ");
//request.Headers.Add("Accept", "application/xml");
byte[] bytes;
bytes = System.Text.Encoding.ASCII.GetBytes(xml);
request.KeepAlive = false;
request.Accept = "application/xml";
request.ContentType = "application/xml; charset='UTF-8'";
request.ContentLength = bytes.Length;
request.Method = "POST";
request.Timeout = 10000;
request.ServicePoint.Expect100Continue = false;
14
Jon

この問題は、クライアントコンピューターがHTTP要求を送信できない場合に発生します。接続が閉じられているか、利用できないため、クライアントコンピューターはHTTP要求を送信できません。この問題は、クライアントコンピューターが大量のデータを送信しているときに発生する可能性があります。この問題を解決するには、解像度A、D、E、F、およびOを参照してください。

https://support.Microsoft.com/en-us/kb/915599

0
Dongming Yan

HttpWebRequest.KeepAliveをfalseに設定しても機能しませんでした。

HTTPSページにアクセスしていたので、Service Point Security ProtocolをTls12に設定する必要がありました。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

他のSecurityProtocolTypesがあることに注意してください。

SecurityProtocolType.Ssl3 
SecurityProtocolType.Tls
SecurityProtocolType.Tls11

Tls12が機能しない場合は、残りの3つのオプションを試してください。

また、複数のプロトコルを設定できることに注意してください。これはほとんどの場合に適しています。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12| SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
25

.NET 4.5でRestSharpを使用すると、同じエラーが発生していました。同じURLをcURLでテストしましたが、うまくいきました。長いデバッグの後、SecurityProtocolを設定することで問題が解決することがわかりました。

参照: "基盤となる接続が閉じられました:送信時に予期しないエラーが発生しました。" SSL証明書を使用

9
KevinVictor

私の場合、環境間でURLを交換するときに「https」から「s」を削除するのを忘れていました。偶然にhttpsでLocalhostにアクセスしていました。 https証明書がない、または期限切れの証明書があるhttpサイトにアクセスしている場合も、同じことが起こります。

1
Suamere

この場合、この問題が発生する可能性があります。フィルターリンクであるリンクをダウンロードする必要があり、そのリンクをダウンロードする権限がありません。

1
mohammad almasi

HttpWebRequestでrssファイルをダウンロードしようとすると、このエラーが発生していました。ブラウザでテストし、応答コードを確認したとき、URLは正常でした。ここですべてを試した後、サイトがユーザーエージェントに基づいてブロックしている可能性がありました。

リクエスト内のユーザーエージェント文字列の変更は機能しました:

let request = WebRequest.Create(url) :?> HttpWebRequest
request.UserAgent <- @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"
let response = request.GetResponse()

このユーザーエージェント文字列は、Google Chromeで「ユーザーエージェントとは」と入力したことに由来しています。

0
chuckc

API-KEYを使用してコマンドラインから手動でnugetパッケージをnexusサーバーに展開しているときに、このエラーに直面しました。

Nexusサーバーの設定を確認しましたが、Nexus NuGet APIキーレルムがアクティブになっていないことに気付きました。私はそれを有効にして、もう一度試しました。すべてがうまくいきました。

enter image description here

したがって、サーバー側をチェックして、関連するレルムがアクティブ化されていることを確認する必要があります。

0
wasabi