从AP.Net Webapi调用时,webRequest.GetRequestStream抛出异常

时间:2017-09-07 16:41:17

标签: asp.net-web-api

我需要使用XML有效负载调用第三方遗留服务作为来自Asp.net Web API的POST请求,但我得到一个例外,它可以在Console程序中正常工作。任何想法如何实现这一点将不胜感激。

执行代码行时出现异常 在SubmitRequest()中流dataStream = webRequest.GetRequestStream(): 基础连接已关闭:发送时发生意外错误。 内部异常:无法从传输连接读取数据:远程主机强制关闭现有连接。

为了测试这个,我刚从Home \ Index操作调用了SubmitRequest()私有方法,并在WebRequest.Create上使用了一个有效的URL。

我在问题中放了一个虚假的网址(https://test.legacy3rdparty.com/API/API.aspx),而不是真正的网址。但它是“https”网址。

private static void SubmitRequest(string request)
{
byte[] dataToSend = Encoding.UTF8.GetBytes(request);

// Change the following URL to point to production instead of integration
WebRequest webRequest = WebRequest.Create("https://test.legacy3rdparty.com/API/API.aspx");
webRequest.Method = "POST";
webRequest.ContentLength = dataToSend.Length;
webRequest.ContentType = "text/xml";
try
{
    Stream dataStream = webRequest.GetRequestStream(); //THIS LINE CAUSES THE EXCEPTION
    dataStream.Write(dataToSend, 0, dataToSend.Length);
    dataStream.Close();

    string response = string.Empty;

    try
    {
        WebResponse apiResponse = webRequest.GetResponse();


        using (StreamReader sr = new StreamReader(apiResponse.GetResponseStream()))
        {
            response += sr.ReadToEnd();
        }
    }
    catch (WebException wex)
    {
        HttpWebResponse httpResponse = wex.Response as HttpWebResponse;
        using (Stream responseStream = httpResponse.GetResponseStream())
        using (StreamReader reader = new StreamReader(responseStream))
        {
            response = reader.ReadToEnd();
        }
    }
}
catch (Exception ex)
{

    throw;
}
// Call Parse Function for the XML response
//ParseResponse(response);
}

1 个答案:

答案 0 :(得分:0)

这与TLS握手有关。因此,当我将Web.config文件中的.net运行时目标框架更新为4.6时,它已经工作了。

<system.web>
<httpRuntime targetFramework="4.6" />
</system.web>