1

タイムアウトまでに 10 秒以上かかる場合、http get 要求が失敗するようにします。

私はこれを持っています:

var request = (HttpWebRequest)WebRequest.Create(myUrl);

request.Method = "GET";
request.Timeout = 1000 * 10; // 10 seconds

HttpStatusCode httpStatusCode = HttpStatusCode.ServiceUnavailable;

using (var webResponse = (HttpWebResponse)request.GetResponse())
{
    httpStatusCode = webResponse.StatusCode;
}

リクエストに不適切な URL を入力してもタイムアウトしないようです。長い時間 (数分のようです) 継続します。

どうしてこれなの?

4

2 に答える 2

2

Web プロジェクトで行う場合は、ファイル内のタグのdebug属性が「false」に設定されていることを確認してください。system.web/compilationWeb.Config

コンソールアプリケーションなどの場合は、「リリース」モードでコンパイルしてください。

「デバッグ」モードでは、多くのタイムアウトが無視されます。

于 2013-01-25T20:26:32.787 に答える
1

あなたのコードはおそらく15秒以上かかる不正なURLでDNSルックアップを実行しています。

HttpWebRequest.Timeoutのドキュメントによると

ドメインネームシステム(DNS)クエリは、戻るかタイムアウトするまでに最大15秒かかる場合があります。リクエストに解決が必要なホスト名が含まれていて、Timeoutを15秒未満の値に設定した場合、リクエストのタイムアウトを示すためにWebExceptionがスローされるまでに15秒以上かかる場合があります。

Dns.GetHostEntryを使用してDNSルックアップを実行できますが、デフォルトでは5秒かかるようです。

于 2013-01-25T20:26:56.533 に答える