2017-09-24 12 views
0

私は、このコードは、サーバーから多くのデータが送信されるためタイムアウトしています。タイムアウトを止める方法があるのか​​誰にも知られていますか?HttpWebRequestのタイムアウト

static List<PhraseSource> GetPhrases() 
    { 
     var request = HttpWebRequest.Create("http://aaa.cloudapp.net/api/Phrase/GetJDTO"); 
     request.ContentType = "application/json"; 
     request.Method = "POST"; 

     using (var streamWriter = new StreamWriter(request.GetRequestStream())) 
     { 
      string json = Newtonsoft.Json.JsonConvert.SerializeObject(new 
      { 
       form = "2", // just get words 
       type = "0" 
      }); 
      streamWriter.Write(json); 
     } 

私のC#のサーバーコードです。わからないが、おそらくそこに問題はそれでそこにもありますが、今のところは、クライアント上のようだ:

[HttpPost] 
    [AllowAnonymous] 
    [Route("GetJDTO")] 
    public async Task<IHttpActionResult> GetJDTO([FromBody] GetJDTOOptions options) 
    { 
     IQueryable<Phrase> query = null; 

     query = db.Phrases.AsQueryable(); 
+0

など、(ドキュメントで述べたように)Timeout.Infiniteを使用しますが、それはあなたのクライアント側での経験を破壊する可能性を秘めていることができますチェックapiにはページングオプションがあり、小さなバッチでアイテムを取得します。 – thisextendsthat

+0

あなたは 'GetResponse()'を呼んだことを示していません。 – Crowcoder

答えて

1

WebRequestオブジェクトはHttpWebRequest.Createにあなたの呼び出しから返さTimeout性質を持っています。 HttpWebRequestの場合、デフォルトは100秒です。

この例では、必要に応じてこれをさらに高く設定できます。例えば:

... 
request.Method = "POST"; 
request.Timeout = **numberOfMilliseconds**; 

あなたは質問のコメントで@thisextendsthatによって示唆されているように、ページングなどを検討する必要がありますが、あなたの具体的な質問がTimeout対応しています。かどうかを確認するために

あなたは、特に完全にタイムアウトを停止することについて尋ねられたとして、あなたは