C# 正在尝试使用System.Net.WebRequest检查是否已断开连接

C# 正在尝试使用System.Net.WebRequest检查是否已断开连接,c#,asp.net,webrequest,C#,Asp.net,Webrequest,我正在用asp.net和c#开发一个网站,如果用户按下按钮时未连接,则需要捕获该网站。因此,基本上,如果用户已连接,它将加载GetList函数,如果未连接,将显示一条消息 到目前为止,代码是 protected void btnAlphabetical_Click(object sender, EventArgs e) { Session["Online"] = 0; CheckConnect(); if ((int)Session["Online"] == 1) { G

我正在用asp.net和c#开发一个网站,如果用户按下按钮时未连接,则需要捕获该网站。因此,基本上,如果用户已连接,它将加载GetList函数,如果未连接,将显示一条消息

到目前为止,代码是

protected void btnAlphabetical_Click(object sender, EventArgs e)
{
    Session["Online"] = 0;
    CheckConnect();
    if ((int)Session["Online"] == 1) { GetList(); }
    if ((int)Session["Online"] == 0) { Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "alertMessage", "alert('You are currently offline')", true); }
}

protected void CheckConnect()
{
    System.Uri Url = new System.Uri("http://www.mywebsite.com/apicture.jpg?" + DateTime.Now);
    System.Net.WebRequest WebReq;
    System.Net.WebResponse Resp;
    WebReq = System.Net.WebRequest.Create(Url);
    try
    {
        Resp = WebReq.GetResponse();
        Resp.Close();
        WebReq = null;
        Session["Online"] = 1;
    }
    catch
    {
        WebReq = null;
        Session["Online"] = 0;
    }
}
基本上,我们将在线会话值设置为0并调用CheckConnect函数。这会得到一个已经在网站上的jpg,如果可以加载,则将我们的在线变量设置为1。如果找不到,则将其设置为0。当控件返回到主功能(一个按钮)时,我们将根据联机的是-1还是0进行处理

问题是,我不确定这是否与我的系统设置有关:

  • 当我们在线并且得到一些确实存在的东西时,它工作正常,GetList被触发
  • 当我们在线获取不存在的东西(无效URL)时,它工作正常,我们的消息出现(GetList未被激发)
  • 然而,当我们离线并启动它时,我的浏览器(IE8)只会进入常规的“诊断连接设置”屏幕
这是我的代码,还是IE8的一部分?我不能使用其他浏览器,因为这是我公司使用的浏览器

谢谢


编辑-此功能的一般用途是在移动设备上使用。用户将加载页面并进行更改,然后使用按钮。如果正在加载的页面与用户按下按钮之间的连接丢失,我不希望用户丢失他们的更改。

如果他们没有连接,带有按钮的页面将永远不会出现。。。您确定不想在客户端执行此操作吗?这将告诉你浏览器是否可以访问图像,而不是服务器。我正在使用它查看连接是否丢失。这是一个关于移动设备的页面,如果移动设备失去连接,这将(希望)阻止用户丢失他们的工作。除此之外,我想客户端更有意义,但我不太知道如何做到这一点。您的
CheckConnect()
方法在服务器上运行,并且在用户没有连接的情况下不会执行。用JavaScript实现它。知道服务器无法访问图像有什么价值?我认为您正在寻找确定您的移动设备是否可以到达服务器。这里有一个很好的资源:请注意“让我们将其脱机”和“存储您的东西的地方”。如果您需要jQuery脚本来确定您的设备是否脱机,请告诉我,我会发布它。jQuery脚本非常好,可能需要一段时间我才能实现它(离开办公室到下周中旬)。以前在jQuery脚本中遇到了一些问题,它可以正常工作,但没有触发c#事件。