下载Feed时请求已取消

时间:2015-06-05 07:37:40

标签: c# rest azure

我在Azure上有一个辅助角色。每两个小时,我从3个不同的联营公司下载产品。

第一次,当工作开始时,它的工作完美无缺。下一次工作应该运行,我从一个联盟会员那里得到,"请求被中止:请求被取消。"其他两个人完美无缺。

每次都不只是一次。我问过这家联营公司,但没有问题。所以一定是我的代码。我有这个下载json doc:

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

1 个答案:

答案 0 :(得分:0)

  1. 更改请求的顺序,看看对同一家公司的请求是否失败?

  2. 默认情况下,WebClient会打开一个KeepAlive连接,这可能会导致此问题。因此,请尝试明确提及KeepAlive模式为false。

  3. 第一次和第二次使用提琴手或类似工具捕获请求详细信息,这些工具可以为您提供跟踪问题的更多详细信息。

相关问题