WebRequest该请求被中止,该请求被取消

问题描述 投票:1回答:2

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

使用SSIS(Visual Studio 2017)中的脚本任务使用第三方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;
    }

错误在行上生成

if (req != null)

这一直持续到今天早上。

c# rest webrequest script-task ssis-2017
2个回答
0
投票

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

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

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

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


0
投票

可能是一个愚蠢的问题,但是它是否正在工作并且突然停止...您是否检查了该服务是否仍然可用?使用Postman进行检查。

© www.soinside.com 2019 - 2024. All rights reserved.