相关疑难解决方法(0)

HttpWebRequest:请求已中止:请求已取消

我一直致力于开发一种中间人应用程序,它使用一系列日期的HTTP发布请求(通常一次只有7个)将文本上传到CMS后端.我正在使用HttpWebRequest来实现这一目标.它似乎在第一个日期工作正常,但是当它开始第二个日期时,我得到System.Net.WebException:请求被中止:请求被取消.

我四处搜寻,发现了以下重要线索:

http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/0d0afe40-c62a-4089-9d8b-fb4d206434dc

http://www.jaxidian.org/update/2007/05/05/8

http://arnosoftwaredev.blogspot.com/2006/09/net-20-httpwebrequestkeepalive-and.html

他们并没有太多帮助.我已经尝试重载GetWebReuqest,但这没有意义,因为我没有使用该函数.

这是我的代码:http: //pastebin.org/115268

在成功运行至少一次后,我在第245行得到错误.

我很感激我能得到的任何帮助,因为这是我一直在努力的项目的最后一步.这是我的第一个C#/ VS项目,所以我对任何提示持开放态度,但我想专注于首先解决这个问题.

谢谢!

c# httpwebrequest visual-studio-2008

22
推荐指数
2
解决办法
6万
查看次数

将async/await转换为Task.ContinueWith

对此问题予以评论引发的这一个:

如何在async/await没有的情况下将非线性代码反向移植到.NET 4.0 Microsoft.Bcl.Async

在链接的问题中,我们有一个WebRequest操作,如果它一直失败,我们想要重试有限次数.该Async/await代码看起来是这样的:

async Task<HttpWebResponse> GetResponseWithRetryAsync(string url, int retries)
{
    if (retries < 0)
        throw new ArgumentOutOfRangeException();

    var request = WebRequest.Create(url);
    while (true)
    {
        WebResponse task = null;
        try
        {
            task = request.GetResponseAsync();
            return (HttpWebResponse)await task;
        }
        catch (Exception ex)
        {
            if (task.IsCanceled)
                throw;

            if (--retries == 0)
                throw; // rethrow last error

            // otherwise, log the error and retry
            Debug.Print("Retrying after error: " + ex.Message);
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous task-parallel-library async-await

6
推荐指数
1
解决办法
3156
查看次数