C# 如何以编程方式生成所有web服务器错误

C# 如何以编程方式生成所有web服务器错误,c#,asp.net,iis,httpwebrequest,C#,Asp.net,Iis,Httpwebrequest,我想生成特定链接的所有错误,如果链接不工作,那么应该显示特定的web服务器错误 这是我的密码。请建议在哪里应该程序应该做我可以得到所有的错误,如果链接不工作 public partial class WebForm2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected vo

我想生成特定链接的所有错误,如果链接不工作,那么应该显示特定的web服务器错误

这是我的密码。请建议在哪里应该程序应该做我可以得到所有的错误,如果链接不工作

  public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {          

        }
        protected void btnRender_Click(object sender, EventArgs e)
        {
            string strResult = string.Empty;

            WebResponse objResponse;
            WebRequest objRequest = System.Net.HttpWebRequest.Create(urltxt.Text);

            objResponse = objRequest.GetResponse();

            using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
            {
                strResult = sr.ReadToEnd();
                sr.Close();
            }
            strResult = strResult.Replace("<form id='form1' method='post' action=''>", "");
            strResult = strResult.Replace("</form>", "");
            //strResult = strResult.Replace("<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" /><html xmlns="http://www.w3.org/1999/xhtml">");
            div.InnerHtml = strResult;

        }

        protected void btn_createlink_Click(object sender, EventArgs e)
        {
            var links = TextBox1.Text.Split(new string[] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var link in links)
            {
                if (!IsLinkWorking(link))
                {
                    //Here you can show the error. You don't specify how you want to show it.
                    TextBox2.Text += string.Format("{0}\nNot working\n\n ", link);
                }
                else
                {
                    TextBox2.Text += string.Format("{0}\n working\n\n", link);
                }
            }
        }


bool IsLinkWorking(string url)
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);

    //You can set some parameters in the "request" object...
    request.AllowAutoRedirect = true;
    ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;

    try
    {
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        return true;
    }
    catch
    { 
        //TODO: Check for the right exception here
        return false;
    }
}
public分部类WebForm2:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{          
}
受保护的无效btnRender\u单击(对象发送者,事件参数e)
{
string strResult=string.Empty;
WebResponse-objResponse;
WebRequest objRequest=System.Net.HttpWebRequest.Create(urltxt.Text);
objResponse=objRequest.GetResponse();
使用(StreamReader sr=newstreamreader(objResponse.GetResponseStream())
{
strResult=sr.ReadToEnd();
高级关闭();
}
strResult=strResult.Replace(“,”);
strResult=strResult.Replace(“,”);
//strResult=strResult.Replace(“”);
div.InnerHtml=stresult;
}
受保护的无效btn\u createlink\u单击(对象发送方,事件参数e)
{
var links=TextBox1.Text.Split(新字符串[]{“\n”,“\r”},StringSplitOptions.RemoveEmptyEntries);
foreach(链接中的var链接)
{
如果(!IsLink工作(链接))
{
//您可以在这里显示错误。您不需要指定显示错误的方式。
TextBox2.Text+=string.Format(“{0}\n不工作\n\n”,链接);
}
其他的
{
TextBox2.Text+=string.Format(“{0}\n工作\n\n”,链接);
}
}
}
bool IsLinkWorking(字符串url)
{
HttpWebRequest请求=(HttpWebRequest)HttpWebRequest.Create(url);
//您可以在“请求”对象中设置一些参数。。。
request.AllowAutoRedirect=true;
ServicePointManager.ServerCertificateValidationCallback=(s、证书、链、ssl)=>true;
尝试
{
HttpWebResponse=(HttpWebResponse)request.GetResponse();
返回true;
}
抓住
{ 
//TODO:在此处检查正确的异常
返回false;
}
}
回答“如何使用Visual Studio和MSDN查找有关方法和相关异常的帮助”:

  • 在Visual Studio中,选择您需要的方法信息,然后按F1。将显示有关给定方法的帮助。或者,您可以在您喜爱的搜索引擎(即)上搜索类+方法名称-即
  • 给定方法上的MSDN页面要么来自帮助,要么通常是搜索结果中的第一个结果之一—请阅读
  • 大多数方法都包含列出异常的“异常”部分,通常包含详细信息的“备注”部分。 在您的案例中,它抛出了
    WebException
    exception和备注部分,详细介绍了异常。特别是它提到的属性正好涵盖了您要查找的内容(包括示例代码)
文章的部分样本显示了
状态
响应的用法。状态码

try 
{
  var myHttpWebRequest = (HttpWebRequest) WebRequest.Create(pathThatReturns404);
  var myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
}
catch(WebException e) 
{
    if(e.Status == WebExceptionStatus.ProtocolError) 
    {
        Console.WriteLine("Status Code : {0}",
            ((HttpWebResponse)e.Response).StatusCode);
    }
}
关于“如何使用Visual Studio和MSDN查找有关方法和相关异常的帮助”的回答:

  • 在Visual Studio中,选择您需要的方法信息,然后按F1。将显示有关给定方法的帮助。或者,您可以在您喜爱的搜索引擎(即)上搜索类+方法名称-即
  • 给定方法上的MSDN页面要么来自帮助,要么通常是搜索结果中的第一个结果之一—请阅读
  • 大多数方法都包含列出异常的“异常”部分,通常包含详细信息的“备注”部分。 在您的案例中,它抛出了
    WebException
    exception和备注部分,详细介绍了异常。特别是它提到的属性正好涵盖了您要查找的内容(包括示例代码)
文章的部分样本显示了
状态
响应的用法。状态码

try 
{
  var myHttpWebRequest = (HttpWebRequest) WebRequest.Create(pathThatReturns404);
  var myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
}
catch(WebException e) 
{
    if(e.Status == WebExceptionStatus.ProtocolError) 
    {
        Console.WriteLine("Status Code : {0}",
            ((HttpWebResponse)e.Response).StatusCode);
    }
}

请添加有关代码有哪些问题的信息。如果(!IsLinkWorking(link)){TextBox2.Text+=string.Format(“{0}\n}\n”not working\n\n”,link);}else,我想生成类似401 error的错误代码{TextBox2.Text+=string.Format(“{0}\n正在工作\n\n”,link);}@AlexeiLevenkov我需要打印特定错误,而不是不工作printing@AlexeiLevenkov嘿,兄弟,你已经给出了下面的答案..我接受了,但我已经发送了web请求,所以请注意我必须写些什么,而不是工作或只是编辑mycode..请添加关于代码有什么问题的信息。我想生成错误代码l如果(!IsLinkWorking(link)){TextBox2.Text+=string.Format({0}\n不工作\n\n,link);}否则{TextBox2.Text+=string.Format({0}\n工作\n\n,link);}}@AlexeiLevenkov我需要打印特定的错误,而不是不工作printing@AlexeiLevenkov嘿,兄弟,你已经给出了下面的答案。我接受了,但我已经发送了网络请求,所以请告诉我需要写些什么来代替工作,或者不只是编辑mycode。。