我正在尝试发布到我们的星号框来解析电话列表
在控制台应用程序中,这是可行的:
class Program
{
static void Main(string[] args)
{
Console.WriteLine( HttpPost());
System.Threading.Thread.Sleep(10000);
}
public static string HttpPost()
{
var URI = @"http://sip.ligmarine.com/admin/config.php?quietmode=on&type=tool&display=printextensions";
var Parameters = "display=printextensions&quietmode=on&type=tool&core=core&featurecodeadmin=featurecodeadmin&paging=paging";
var retVal = "";
WebClient wc = new WebClient();
wc.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("maint:password")));
wc.Headers.Add("referer", @"http://sip.ligmarine.com/admin/config.php?type=tool&display=printextensions");
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
retVal = Convert.ToBase64String(Encoding.ASCII.GetBytes("maint:password"));
//Console.Write("Resulting Request Headers: ");
//Console.WriteLine(wc.Headers.ToString());
byte[] byteArray = Encoding.ASCII.GetBytes(Parameters);
//Console.WriteLine("Uploading to {0} ...", URI);
// Upload the input string using the HTTP 1.0 POST method.
byte[] responseArray = wc.UploadData(URI, "POST", byteArray);
// Console.WriteLine("\nResponse received was {0}", );
retVal = Encoding.ASCII.GetString(responseArray);
return retVal;
}
}
从我们的IIS6托管的ASP.NET页面中,我得到了
远程主机强制关闭了现有连接说明:在执行当前网站期间发生未处理的异常
请求。请查看堆栈跟踪以了解有关错误和
它起源于法典。
Exception Details: System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
Source Error:
Line 37: //Console.WriteLine("Uploading to {0} ...", URI);
Line 38: // Upload the input string using the HTTP 1.0 POST method.
Line 39: byte[] responseArray = wc.UploadData(URI, "POST", byteArray);
Line 40: // Console.WriteLine("\nResponse received was {0}", );
Line 41:
HttpPost方法与页面加载完全相同:
protected void Page_Load(object sender, EventArgs e)
{
var ret = HttpPost();
Response.Write(ret);
}
5条答案
按热度按时间nfzehxib1#
我有非常相似的情况,但不同的解决方案。在我的Windows 10开发机器+控制台应用程序上,
WebClient.UploadData
到https
地址工作得很好。但当相同的确切函数被复制到一个ASP.NET MVC应用程序,并发布到不同的Web服务器(Windows 2008 R2)时,它会出现以下异常:System.Net.WebException:基础连接已关闭:发送时发生意外错误。---〉System.IO. IO异常:无法从传输连接读取数据:远程主机强制关闭了一个现有连接。---〉System .NET.Sockets.SocketException:远程主机强制关闭了现有连接
两个项目都使用.NET Framework 4.6.1
通过使用
TLS1.2
进行调用解决。在UploadData
之前添加以下内容:Source
oymdgrw72#
这是一个DNS问题...服务器正在解析为专用IP控制台应用程序正在解析为公用
rbpvctlc3#
谢谢,你救了我的一天。对Azure AppService应用程序的请求引发了“..连接已关闭”异常。
设置***SecurityProtocolType.Tls12***已修复此问题。
也适用于
和
eni9jsuy4#
我也遇到了同样的问题。将安全协议设置为TLS1. 2并没有解决我的问题。我不得不按照建议添加另一行代码here。
wnavrhmk5#
如果您使用的是.NETFramework4.0,它只有
Tls
和Ssl3
,您可以在.NET Framework 4.0中执行以下操作以使其正常工作:
因此
Tls12
的代码是3072。或者只是升级你的项目,然后你就可以做评论的事情。