【问题标题】:http status code 500 / webpage stops refreshinghttp状态码500/网页停止刷新
【发布时间】: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


【解决方案1】:

你会重新加载完整的页面吗?

你用ajax调用怎么样?您可以将其放在 setInterval/setTimeout 中,然后处理成功/失败的响应 - 应该使其能够抵抗服务失败,并且更加用户友好。

是的,您可能应该消除 500。Try/catch{msg("OMG,数据库不可访问!")} 类型的东西 :)

啊,你的代码的问题可能是你的代码检查了数据库并且它很好,但是第 500 个用户连接了,你的页面刷新失败了。

【讨论】:

  • 重新加载完整的页面是我想要实现的目标。问题发生时一直在检测错误。
猜你喜欢
  • 2021-06-17
  • 2011-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 2017-11-01
  • 2016-05-29
相关资源
最近更新 更多