我们有一个内部网页面,用于在我们网站周围的监视器上显示信息。此网页每15秒自动刷新一次。
所有这些都可以找到,直到数据库服务器出现问题并且网页出现问题并且不再获得连接,并且我们通常会收到HTTP 500错误。
我的解决方案是编写一个C#应用程序来检查网页的HTTP状态,如果发现HTTP 500关闭浏览器然后再次重新打开并显示网页。 此应用程序使用的计时器事件设置为30秒。
我遇到的问题是我的C#应用程序并不总是收到500错误,或者任何其他可能导致网页停止刷新的错误。
下面是我编写的用于尝试检查错误的代码
public static void Check_Process()
{
Console.Write("checking started at {0}" + Environment.NewLine, DateTime.Now);
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(txt_url);
response = (HttpWebResponse)request.GetResponse();
// Read the error stream first and then wait.
string error = someProcess.StandardError.ReadToEnd();
Console.Write(error);
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.ProtocolError)
{
response = (HttpWebResponse)e.Response;
if ((int)response.StatusCode == 500)
{
Console.Write((int)response.StatusCode + " error found at {0}" + Environment.NewLine, DateTime.Now);
Close_webpage();
Start_webpage();
}
else if (response.StatusCode != HttpStatusCode.OK)
{
Console.Write((int)response.StatusCode + " error found at {0}" + Environment.NewLine, DateTime.Now);
Close_webpage();
Start_webpage();
}
}
}
}
目前使用
从应用程序中加载网页public static void Start_webpage()
{
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.FileName = "IExplore.exe";
startInfo.Arguments = txt_url;
someProcess = Process.Start(startInfo);
}
希望有人可以指出我出错的地方,或更好的方法,因为目前我们必须手动刷新/重新加载网页。
答案 0 :(得分:0)
你是否重新加载了一页?
你如何使用ajax调用呢?你可以将它放在setInterval / setTimeout中,然后处理成功/失败的响应 - 应该使它能够抵抗服务失败,并且更加用户友好。
是的,你可能应该消除500. Try / catch {msg(“OMG,数据库无法访问!”)}类型的东西:)
啊,您的代码问题可能是您的代码检查数据库及其正常,但第500个用户连接,您的页面刷新失败。