2017-09-24 54 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

检查API有一个分页选项,并获得小批量的项目..? – thisextendsthat

+0

你不会显示你曾经调用'GetResponse()' – Crowcoder

回答

1

WebRequest对象从调用返回的HttpWebRequest.CreateTimeout属性。如果是HttpWebRequest,则默认为100秒。

在您的示例中,如果需要,可以将其设置为更高的值。例如: -

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

你可能要考虑分页等,由@thisextendsthat在问题的意见建议,但Timeout针对您的具体问题。

正如你具体问到完全停止超时,你可以使用Timeout.Infinite(如文档中提到),但具有破坏你的客户端体验,看看是否势等

相关问题