3

複数のクライアントにSMSを送信すると、操作がタイムアウトし、エラーがHttpWebResponseに表示されます。

myReq.Timeout=50000を試しました。myReq.ReadWriteTimeout = 50000;

しかし、150行目で同じエラーエラーが発生します
Line 148: myReq.Timeout = 50000;
Line 149: myReq.ReadWriteTimeout = 50000;
Line 150: HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();
Line 151: System.IO.StreamReader respStreamReader = new System.IO.StreamReader(myResp.GetResponseStream());
Line 152: string responseString = respStreamReader.ReadToEnd();

4

1 に答える 1

18

これが問題になる可能性があります。

HttpWebResponse myResp = (HttpWebResponse)myReq.GetResponse();

WebResponseを実装するため、それに対して (およびストリームから作成する に対して)ステートメントをIDisposable使用する必要があります。開いたままにすると、接続プールからそのホストへの接続が使用され、この方法でタイムアウトになる可能性があります。固定コードは次のようになります。usingStreamReaderWebResponse

string responseString;
using (var response = myReq.GetResponse())
{
    using (var reader = new StreamReader(response.GetResponseStream())
    {
        responseString = reader.ReadToEnd();
    }
}

これにより、例外がスローされた場合でもストリームと応答が閉じられるため、常にリソースをクリーンアップします (この場合は接続を解放してプールに戻します)。

于 2013-03-19T07:11:04.487 に答える