【发布时间】:2013-05-01 04:30:01
【问题描述】:
我们有一个 Intranet 网页,用于在我们网站周围的监视器上显示信息。此网页每 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);
}
希望有人能指出我哪里出错了,或者更好的方法,因为目前我们必须手动刷新/重新加载网页。
【问题讨论】:
-
除了修复网络应用程序使其不超过 500 之外还有什么?
-
你应该在 if (e.Status != WebExceptionStatus.ProtocolError) -- 应用程序没有抛出异常的时候做一些事情,所以当 e.Status 不是那个值时你可以忽略它.该应用程序正在尝试传达某些信息,请不要丢弃该线索。
-
如果是服务器出错,为什么重启浏览器会有帮助?
-
500错误是由于超过了我们被允许访问数据库的用户数量造成的,而此时公司不想增加许可证,所以我们不得不受苦,并找到解决此类问题的方法
-
如上所述,我添加了一些额外的代码来检查 e.Status != WebExceptionStatus.ProtocolError。这并没有进一步说明问题。除了在我看来它不会退出捕获(WebException e),因为我在几次旋转后从未看到“检查开始于”消息行
标签: c# javascript html vbscript