Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebRequest.GetResponse错误:底层连接-C#Asp.Net_C#_Asp.net - Fatal编程技术网

WebRequest.GetResponse错误:底层连接-C#Asp.Net

WebRequest.GetResponse错误:底层连接-C#Asp.Net,c#,asp.net,C#,Asp.net,下面是我的HttpWebRequest代码。我想知道为什么我可以在google.com或facebook.com上使用这个代码 在下面这个特定的站点上,我遇到了以下错误底层连接已关闭:发送时发生意外错误。 我还需要在代码中添加什么才能使其正常工作?你们有什么想法吗?我搜索到我需要证书或可信证书来发出http请求,但如何在代码中实现这一点 protected void Button1_Click(object sender, EventArgs e) { WebRequest MyWebR

下面是我的HttpWebRequest代码。我想知道为什么我可以在google.com或facebook.com上使用这个代码

在下面这个特定的站点上,我遇到了以下错误
底层连接已关闭:发送时发生意外错误。

我还需要在代码中添加什么才能使其正常工作?你们有什么想法吗?我搜索到我需要证书或可信证书来发出http请求,但如何在代码中实现这一点

protected void Button1_Click(object sender, EventArgs e)
{
    WebRequest MyWebRequest;
    WebResponse MyWebResponse;
    StreamReader sr;
    string strHTML;
    StreamWriter sw;

    MyWebRequest = HttpWebRequest.Create("https://qiita.com/naoki_mochizuki/items/3fda1ad6594c11d7b43c");
    MyWebResponse = MyWebRequest.GetResponse();
    sr = new StreamReader(MyWebResponse.GetResponseStream());
    strHTML = sr.ReadToEnd();

    string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);  

    sw = File.CreateText(@path +"\\"+TextBox1.Text+"");
    sw.WriteLine(strHTML);

    sw.Close();               

}

使用CreateHttp静态助手方法而不是创建

原因是您有一个属性
ServerCertificateValidationCallback
,它是一个委托,允许您自定义认证验证操作

在下面的例子中,我将其设置为静态返回true以继续或允许请求

HttpWebRequest MyWebRequest;
WebResponse MyWebResponse;
StreamReader sr;
string strHTML;
StreamWriter sw;
MyWebRequest = (HttpWebRequest)HttpWebRequest.Create("https://qiita.com/naoki_mochizuki/items/3fda1ad6594c11d7b43c");
MyWebRequest.ServerCertificateValidationCallback = (snd, cert, chain, err) => true;

我添加了这个代码来解决这个问题

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

如何声明servercertificatevalidationcallback?使用system.certificate?诸如此类?我不明白如何声明servercertificatevalidationcallback,你是什么意思?ServerCertificateValidationCallback是HttpWebRequest的成员属性。错误1“System.Net.WebRequest”不包含“ServerCertificateValidationCallback”的定义,并且找不到接受类型为“System.Net.WebRequest”的第一个参数的扩展方法“ServerCertificateValidationCallback”(是否缺少using指令或程序集引用?请显示我的编辑。变量MyWebRequest请将类型从WebRequest更改为
HttpWebRequest
。错误1'System.Net.HttpWebRequest'不包含'CreateHttp'的定义错误2无法在此范围内声明名为'sender'的局部变量,因为它将我对“发送者”有不同的含义,它已经在“父级或当前”范围中用于表示其他内容