jblzg的技术园

关注基于.Net的Web解决方案,高性能数据库设计,高性能Web服务解决方案,关注移动开发

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我们公司的网站首页、频道首页静态化策略是这样的:

一个服务ServiceA每5分钟会对配置好的网站首页、频道首页源地址分别发起一次请求,然后把请求的数据写入一个Html文档,这个Html文档即静态化的页面。

本来一直工作的很正常,但今天我使用了自定义的500错误页面后出问题了,首页静态页面不定时地呈现出了我自定义的500错误页面,经分析,发现原来没有使用自定义错误页面时,WebResponse的返回结果是一个错误,可以被捕捉到;但使用了自定义错误页面后,WebResponse就把这个错误页面当成了首页的内容了。

接下来就是改进ServiceA了,在获得WebResponse的内容之前先判断返回的HttpStatusCode,只有是200时才返回页面内容,否则返回一个空字符串,附部分代码:

HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create(SourceUrl);
wr.Timeout 
= 20000;  // 20秒
HttpWebResponse wResponse = (HttpWebResponse)wr.GetResponse();

if (wResponse.StatusCode == HttpStatusCode.OK)
{
    StreamReader sr 
= new StreamReader(wResponse.GetResponseStream(), System.Text.Encoding.GetEncoding(Encodeing));
    strContent 
= sr.ReadToEnd();
}

 

在如何获得Http请求的状态代码时颇费一番周折,后来发现WebResponse类是没有 StatusCode 属性的,只有继承于它的HttpWebResponse类才有;另外,HttpWebRequest.GetResponse 返回的类型竟然不是HttpWebResponse,而是WebResponse,难道HttpWebResponse.GetResponse 还会返回非Http的Response?如果有朋友有答案,感谢分享。

posted on 2009-03-04 18:24  jblzg  阅读(1168)  评论(0编辑  收藏  举报