HttpWebRequest超时

时间:2017-09-24 13:02:45

标签: c# asp.net asp.net-web-api

我有这个代码超时,因为有很多来自服务器的数据。有谁知道是否有办法停止超时?

    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();

1 个答案:

答案 0 :(得分:1)

您致电WebRequest时返回的HttpWebRequest.Create对象有Timeout属性。在HttpWebRequest的情况下,默认为100秒。

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

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

您可能需要考虑问题评论中@thisextendsthat建议的分页等,但Timeout解决了您的具体问题。

当您特别询问完全停止超时时,您可以使用Timeout.Infinite(如文档中所述),但这可能会破坏您的客户端体验等。