C# 正在尝试使用System.Net.WebRequest检查是否已断开连接
我正在用asp.net和c#开发一个网站,如果用户按下按钮时未连接,则需要捕获该网站。因此,基本上,如果用户已连接,它将加载GetList函数,如果未连接,将显示一条消息 到目前为止,代码是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
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)只会进入常规的“诊断连接设置”屏幕
编辑-此功能的一般用途是在移动设备上使用。用户将加载页面并进行更改,然后使用按钮。如果正在加载的页面与用户按下按钮之间的连接丢失,我不希望用户丢失他们的更改。如果他们没有连接,带有按钮的页面将永远不会出现。。。您确定不想在客户端执行此操作吗?这将告诉你浏览器是否可以访问图像,而不是服务器。我正在使用它查看连接是否丢失。这是一个关于移动设备的页面,如果移动设备失去连接,这将(希望)阻止用户丢失他们的工作。除此之外,我想客户端更有意义,但我不太知道如何做到这一点。您的
CheckConnect()
方法在服务器上运行,并且在用户没有连接的情况下不会执行。用JavaScript实现它。知道服务器无法访问图像有什么价值?我认为您正在寻找确定您的移动设备是否可以到达服务器。这里有一个很好的资源:请注意“让我们将其脱机”和“存储您的东西的地方”。如果您需要jQuery脚本来确定您的设备是否脱机,请告诉我,我会发布它。jQuery脚本非常好,可能需要一段时间我才能实现它(离开办公室到下周中旬)。以前在jQuery脚本中遇到了一些问题,它可以正常工作,但没有触发c#事件。