我需要使用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);
}
答案 0 :(得分:0)
这与TLS握手有关。因此,当我将Web.config文件中的.net运行时目标框架更新为4.6时,它已经工作了。
<system.web>
<httpRuntime targetFramework="4.6" />
</system.web>