1

如果链接不起作用,我想生成特定链接的所有错误,那么它应该显示特定的 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;
    }
}
4

1 回答 1

1

回答“如何使用 Visual Studio 和 MSDN 查找有关方法和相关异常的帮助”:

  • 在 Visual Studio 中选择您需要的信息并按 F1 的方法。将显示给定方法的帮助。或者,您可以在您最喜欢的搜索引擎(即http://bing.com)上搜索类+方法名称 - 即http://www.bing.com/search?q=HttpWebResponse.GetResponse
  • 给定方法的 MSDN 页面要么来自帮助,要么通常是搜索结果中的第一个结果 - 阅读它。
  • 大多数方法都包含列出异常的“异常”部分,并且通常包含包含详细信息的“备注”部分。在您的情况下, HttpWebResponse.GetResponse显示它引发WebException异常,并且 Remarks 部分详细介绍了异常。特别是它提到了 WebException.Response属性,该属性涵盖了您正在寻找的内容(包括示例代码)。

文章的部分示例显示了Status和的用法Response.StatusCode

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);
    }
}
于 2013-03-05T06:27:50.783 回答