1

[编辑] 我的错误 - 显示错误发生的错误行。

我是 SQL Server 开发人员而不是 .net 开发人员,所以请多多包涵。

在 SSIS (Visual Studio 2017) 中使用脚本任务使用第 3 方 Rest API 并收到以下错误

请求被中止,请求被取消。

这是我正在使用的代码

    string responseMessage = null;
    string pushResponse = null;

    try
    {
        WebRequest req = WebRequest.Create(post_url);
        req.Method = "POST";
        req.ContentType = "application/json";
        req.Timeout = 600000;
        req.Credentials = new NetworkCredential(api_username, api_password);
        using (var streamWriter = new StreamWriter(req.GetRequestStream()))
        {
            string json = "{\r\n\"carCountryCode\": \"" + api_countryCode + "\",\r\n\"carLicenseNumber\": \"" + carLicenseNumber + "\",\r\n\"client\": \"" + api_client + "\"\r\n}";

            streamWriter.Write(json);
        }


        if (req != null)
        {
            var response = req.GetResponse() as HttpWebResponse;
            if (response.StatusCode == HttpStatusCode.OK)
            {
                System.IO.Stream responseStream = response.GetResponseStream();
                if (responseStream != null)
                {
                    var reader = new System.IO.StreamReader(responseStream);

                    responseMessage = reader.ReadToEnd();
                    pushResponse = responseMessage;
                    reader.Close();
                    responseStream.Close();
                    response.Close();
                }
                responseStream.Close();
                response.Close();
            }
            else
            {
                responseMessage = response.StatusDescription;
                //MessageBox.Show("Error:" + responseMessage);
            }
            //MessageBox.Show("Success: " + pushResponse);
            response.Close();
        }

    }
    //catch (Exception e)
    catch (Exception ex)
    {
        Dts.Events.FireError(0, "ERROR", ex.Message, null, 0);
        Dts.TaskResult = (int)ScriptResults.Failure;
    }

在线生成错误 - [编辑] 我的错误,之前显示错误的行

var response = req.GetResponse() as HttpWebResponse;

这一直工作到今天早上。我已经检查过,该服务已启动并正在运行。

4

2 回答 2

0

可能是一个愚蠢的问题,但如果它正在工作并突然停止......您是否检查过该服务是否仍然可用?使用邮递员检查。

于 2020-03-03T11:21:51.823 回答
0

我们需要做的是编辑这个文件并覆盖继承的 GetWebRequest 方法。覆盖方法应如下所示(用 C# 编写的示例):

    protected override WebRequest GetWebRequest(Uri uri)
    {
        HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);

        webRequest.KeepAlive = false;
        webRequest.ProtocolVersion = HttpVersion.Version10;
        return webRequest;
    }

请记住,当您执行更新 Web 参考命令时,VS 将重新生成文件并且您的更改将丢失。因此,您需要在每次更新后再次覆盖该方法。

于 2020-03-03T11:13:24.540 回答