C# 下载源时请求已取消

C# 下载源时请求已取消,c#,rest,azure,C#,Rest,Azure,我在Azure上有一个工作者角色。每两个小时,我就会从3家不同的附属公司下载产品 第一次,当作业运行时,它工作得非常完美。下一次作业应该运行时,我从一个附属公司得到,“请求被中止:请求被取消。”另外两个工作正常 不只是一次,每次都是。我问过这家附属公司,但没有问题。所以这一定是我的密码。我要下载json文档: using (var Client = new WebClient()) { Client.Headers.Add("X-API-K

我在Azure上有一个工作者角色。每两个小时,我就会从3家不同的附属公司下载产品

第一次,当作业运行时,它工作得非常完美。下一次作业应该运行时,我从一个附属公司得到,“请求被中止:请求被取消。”另外两个工作正常

不只是一次,每次都是。我问过这家附属公司,但没有问题。所以这一定是我的密码。我要下载json文档:

        using (var Client = new WebClient())
        {
            Client.Headers.Add("X-API-KEY", Key);
            Data = Client.DownloadString(URL);
        }
我错过了什么

更新1:

我试过这个:

        HttpWebRequest Req = (HttpWebRequest)WebRequest.Create(URL);
        Req.KeepAlive = false;
        Req.Headers.Add("X-API-KEY", Key);
        Req.Method = "GET";

        using (var Resp = Req.GetResponse())
        {
            using (var Reader = new StreamReader(Resp.GetResponseStream()))
            {
                Data = Reader.ReadToEnd();
            }
        }
同样的问题

更新2

请求1

GET https://se.#####.com/1/stores.json HTTP/1.1
X-API-KEY: x.............N
Host: se.#####.com
Connection: Close
答复1

HTTP/1.1 200
Server: nginx
Date: Mon, 08 Jun 2015 14:56:39 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
Set-Cookie: ci_session=..............; expires=Mon, 08-Jun-2015 16:56:39 GMT; Max-Age=7200; path=/

e30
{"status":true,"data":[................]}
0
请求2

GET https://se.#####.com/1/stores.json HTTP/1.1
X-API-KEY: x.............N
Host: se.#####.com
Connection: Close
答复2

HTTP/1.1 200
Server: nginx
Date: Mon, 08 Jun 2015 15:06:29 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
Set-Cookie: ci_session=..................; expires=Mon, 08-Jun-2015 17:06:29 GMT; Max-Age=7200; path=/

e30
{"status":true,"data":[.....................]}
0
更新3

    [TestMethod]
    public void DownloadTest()
    {
          Test();
          Test();
          Test();
    }


    private static void Test()
    {
        const string merchantsUrl = "https://se.#####.com/1/stores.json";
        string Data;

        var Req = (HttpWebRequest)WebRequest.Create(merchantsUrl);
        Req.KeepAlive = false;
        Req.Headers.Add("X-API-KEY", ".....");
        Req.Method = "GET";

        using (var Resp = Req.GetResponse())
        {
            using (var Reader = new StreamReader(Resp.GetResponseStream()))
            {
                Data = Reader.ReadToEnd();
            }
        }
    }
  • 更改请求的顺序,查看向同一家公司发出的请求是否失败

  • 默认情况下,WebClient以KeepAlive的身份打开连接,这可能会导致此问题。因此,请明确指出KeepAlive模式为false。

  • 在fiddler或类似工具中第一次和第二次捕获请求详细信息,这些工具可以为您跟踪问题提供更多详细信息


  • 1.是的,我试过了,同样的问题。2.用我做的另一次尝试更新了我的问题。3.我在我的电脑上试用fiddler,我从附属公司得到了相同的响应(json)。但在我第二次收到“请求被中止:请求被取消”时,在我的服务中。你能在第一次和第二次请求时检查小提琴手,而不是在回应时检查小提琴手,以了解你的第二次请求有多不同吗?是的,我找不到任何不同。我用fiddler提供的信息更新了我的问题,se UPDATE 2。它看起来很疯狂。但我想做的最后一次尝试是——通过任何rest客户端,如chrome上的Fiddler或PostMan,尝试使用与您所做的相同的失败服务。从那里手动做两次,看看是否成功。我想我发现了问题。在另外两个请求中,我向关联公司提出了一个请求。我忘记设置KeepAlive=false;现在,错误消失了。