首页 > 解决方案 > 发送开发时发生意外错误,但未实时发生

问题描述

我有一个非常奇怪的错误,已经让我发疯了好几天。

我在我的 Visual Studio 开发环境中运行以下代码并收到错误“发送时发生意外错误”。编译代码并将其移动到没有 Visual Studio 的机器上,它工作正常

环境是使用 Visual Studio 2015 的 .Net 4.7.1

public string Get(string resource)
{
   string url = BuildResourceUrl(resource);
   try
   {
            WebRequest req = WebRequest.Create(url);
            req.Method = "GET";

            req.ContentType = "application/json";
            req.Headers.Add("X-Shopify-Access-Token", _apiPassword);

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            WebResponse response = req.GetResponse();

            Stream dataStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(dataStream);

            string responseFromServer = reader.ReadToEnd();

            reader.Close();
            dataStream.Close();
            response.Close();

            return responseFromServer;
   }
   catch (WebException ex)
   {
            string response;

            using (var reader = new StreamReader(ex.Response.GetResponseStream()))
            {
                response = reader.ReadToEnd();
            }
            throw ex;
   }

}

我已禁用所有防火墙和防病毒软件,但这没有什么区别。

解决这个问题的帮助将是最appriciated

标签: c#webrequest

解决方案


经过多次挖掘和挫折,我找到了解决方案。即使使用 .Net 4.7.1 我仍然必须使用以下代码

public string Get(string resource)
    {
        string url = BuildResourceUrl(resource);
        try
        {
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            WebRequest req = WebRequest.Create(url);
            req.Method = "GET";

            req.ContentType = "application/json";
            req.Headers.Add("X-Shopify-Access-Token", _apiPassword);

            WebResponse response = req.GetResponse();

            Stream dataStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(dataStream);

            string responseFromServer = reader.ReadToEnd();

            reader.Close();
            dataStream.Close();
            response.Close();

            return responseFromServer;
        }
        catch (WebException ex)
        {
            string response;

            using (var reader = new StreamReader(ex.Response.GetResponseStream()))
            {
                response = reader.ReadToEnd();
            }
            throw ex;
        }
    }

这似乎是 Shopify 特定问题,因为我在向其他提供商调用 API 时没有任何问题


推荐阅读