如何用C#实现自动判断链接已失效(链接所指网站已不存在),望高手给出实现代码。
解决方案 »
- 多(跨)数据库如何使用事务处理?
- 双击GridView进入编辑状态??
- 鼠标移开后,ajax回发,这个如何添加,onblur=“” jquery大概如何写?
- Excel弹出框的问题
- 下载文件找不到
- ASP.NET的SESSION可以这样用吗?
- 高分求解:selectionlist响应服务器端SelectIndex_Change事件的问题
- gridview 怎么将两个字段的数据合成一起插入另外一张表
- 请问为什么2003下面跑asp老是不行?老是打不开?
- 在DataGrid控件,添加了一个Delete按钮,当点击Delete时,如何取得我要删除的ID号,数据库中的主键?多谢!
- 刷新页面后,如何保持页面原来的样式
- web treeview控件如何实现移动节点??
提个思路,调用dos的ping,然后根据结果判断!
最好是用线程提交一个访问,然后看是否有代码返回,然后再在返回的代码里面判断出(除开网页告诉你访问不成功的那个反馈代码)
一般对方网站403 404 500都说明人家正在调整,但是是能运行着的.看自己的意思了,如果你强调100%能用,既要排除这些403 404 500之类的代码
StreamReader sr = null;
Encoding code = Encoding.GetEncoding("gb2312");
WebRequest httpWebRequest = null;
WebResponse httpWebResponse = null;
httpWebRequest = WebRequest.Create(m_url);
httpWebResponse = httpWebRequest.GetResponse(); //获得流
sr = new StreamReader(httpWebResponse.GetResponseStream(), code);
m_strHtml = sr.ReadToEnd();根据m_strHtml判断返回值是否正常。
但是做了错误重定向的,就没有办法确认了,除非你知道所有链接网站的重定向内容比如:http://www.microsoft.com/abc.ccc
这个页面是不存在的,而微软就做了一个错误重定向页面
{
WebClient wc = new WebClient();
Stream db = wc.OpenRead(url);
}
catch (Exception ex)
{
//出错表示链接错误,做相应的处理
}在最上面添加
using System.IO;
using System.Net;
StreamReader sr = null;
Encoding code = Encoding.GetEncoding("gb2312");
WebRequest httpWebRequest = null;
WebResponse httpWebResponse = null;
httpWebRequest = WebRequest.Create(m_url);httpWebRequest.AllowAutoRedirect=false //是否重定向httpWebResponse = httpWebRequest.GetResponse(); //获得流
sr = new StreamReader(httpWebResponse.GetResponseStream(), code);
m_strHtml = sr.ReadToEnd();
HttpWebResponse httpWebResponse = null;
httpWebRequest = WebRequest.Create(m_url);
httpWebResponse =(HttpWebResponse)httpWebRequest.GetResponse(); //获得流
if(httpWebResponse.StatusCode==HttpStatusCode.OK)//即应答代码为200
{
//等效于 HTTP 状态 200。OK 指示请求成功,且请求的信息包含在响应中。这是最常接收的状态代码。
}
else
{
//链接实效
}
这个最高效,也是最有效的。
httpWebRequest = WebRequest.Create(m_url); 运行至此报错:无效的 URI: 无法分析主机名。
方法可行,只是美中不足是在库表遍历每条记录检查链接是有时会报超时错误。(表中有61条记录),能不能把效率再提高点?