【问题标题】:How to deal with connection timeout on ASP.NET MVC 3?如何处理 ASP.NET MVC 3 上的连接超时?
【发布时间】:2011-06-20 17:46:24
【问题描述】:

我有一个 ASP.NET MVC 3 应用程序,它显示数据库中的一些值。其中一项功能是可以使用我们的旧文件格式下载此值。在我自己的 PC(使用开发服务器)上对其进行测试时,它运行良好,但在服务器上我无法下载此文件。下载方法基本上是从数据库中搜索一些值并创建一个二进制文件(这是很久以前创建的,作为另一个软件的解决方案)。我想知道如何以优雅的方式处理此连接超时(如果有优雅的方式)。

我的操作方法如下所示:

public ActionResult DownloadSignalRecord(long id, long powerPlantID, long generatingUnitID)
        {
            SignalRepository sr = new SignalRepository();
            var file = sr.GetRecordFile(powerPlantID, generatingUnitID, id);

            return File(file, "binary/RFX", sr.GetRecordName(powerPlantID, generatingUnitID, id) + ".rfx");
        }

有什么想法吗?

【问题讨论】:

  • 目前还不清楚您希望在这里看到什么。您想延长数据库超时以便满足请求吗?您想将用户重定向到指示数据库超时已发生的页面吗?还有什么?
  • 对不起,如果我不清楚。首先我以为 IIS 已经超时,但似乎是 mysql 的问题,因为我阅读堆栈跟踪时更加注意。现在我想知道如何解决这个问题,但这可能是错误的地方。
  • 如果你能把它放在一个与编程相关的绝对答案的问题中,这确实是它的地方

标签: c# asp.net-mvc-3 bytearray binaryfiles


【解决方案1】:

你在寻找这样的东西吗?

public ActionResult DownloadSignalRecord(long id, long powerPlantID, long generatingUnitID)
{
    try
    {
        SignalRepository sr = new SignalRepository();
        var file = sr.GetRecordFile(powerPlantID, generatingUnitID, id);
    }
    catch (Exception ex)
    {
        // Redirect to timeout page
        Redirect("Timeout");
    }

    return File(file, "binary/RFX", sr.GetRecordName(powerPlantID, generatingUnitID, id) + .rfx");
}

【讨论】:

  • 无论如何这都不好,您正在捕获所有异常,但并非所有异常都与超时有关!
  • 是的,您需要过滤异常,但就目前的代码而言,没有任何东西可以捕获异常。
猜你喜欢
  • 2012-03-06
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多