在回发时从ASP.NET页面检索HTML

时间:2011-07-21 16:51:54

标签: asp.net c#-4.0

我发现了一些关于从ASPX页面检索HTML的帖子,主要是通过覆盖渲染方法,使用WebClient或创建HttpWebRequest。所有这些方法在加载时返回页面的HTML,但我希望在用户输入信息后实际检索HTML。 这背后的目的是我在IT工作,我正在尝试构建一个日志库,它具有一个重载,基本上就像用户遇到异常一样在页面上进行“屏幕抓取”,这样我就可以记录例外,并在日志记录目录的子目录中创建一个HTML文件,该文件在单击“提交”或出现其他随机错误之前显示与用户完全相同的页面,并在记录的错误中添加“ID”告诉谁解决了哪个页面需要解决的问题。

我希望我提供了足够的信息,因为我真的不知道从哪里开始。

另外,我们希望通过我们自己的库来实现这一点,因为我们的日志库包含在我们的公共库中,而且我们的许多常用库函数都使用我们的日志类。

2 个答案:

答案 0 :(得分:2)

嗯...

如果你想看看用户在使用页面后看到的内容,你很可能不得不做一些花哨的客户端脚本。

一种天真的方法:

单击提交按钮时,触发编码DOM的JavaScript事件,并将其作为表单变量传递给服务器,或者以编码数据作为参数执行单独的AJAX请求。 (在这种情况下“编码”可能就像抓取document.innerHtml一样简单,但我没有检查过。)

这可能会为每个表单提交带来很多的开销,因此我会将其保留在生产代码之外。

我不确定为什么需要将渲染的HTML作为异常日志的一部分 - 我从未发现它需要进行服务器端调试。

答案 1 :(得分:0)

您从网站获取HTML代码。你可以使用这样的代码。

string urlAddress = "http://www.jobdoor.in";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
  Stream receiveStream = response.GetResponseStream();
  StreamReader readStream = null;
  if (response.CharacterSet == null)
  readStream = new StreamReader(receiveStream);
  else
  readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
  string data = readStream.ReadToEnd();
  response.Close();
  readStream.Close();
}