2011-06-20 33 views
1

我有一個ASP.NET MVC 3應用程序顯示數據庫中的一些值。其中一項功能是可以使用我們的傳統文件格式下載此值。當在我自己的PC(使用開發服務器)中測試它時,它工作正常,但在服務器上我無法下載此文件。下載方法基本上是從數據庫中搜索一些值並創建一個二進制文件(這是很久以前創建的,作爲另一個軟件的解決方案)。我想知道如何以優雅的方式處理這種連接超時(如果有一種優雅的方式)。如何處理ASP.NET MVC 3上的連接超時?

我的操作方法是這樣的:

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"); 
     } 

任何想法?

+1

這是不是很清楚你想看到發生在這裏。您是否想要延長數據庫超時時間以滿足請求?您想將用戶重定向到指示發生數據庫超時的頁面嗎?還有別的嗎? – 48klocs

+0

對不起,如果我不清楚。首先,我認爲IIS已經超時了,但它似乎是一個與MySQL的問題,因爲我閱讀堆棧跟蹤更多的關注。現在我想知道如何解決這個問題,但這可能是錯誤的地方。 –

+0

如果你可以把它放在一個絕對答案是編程相關的問題,這確實是它的地方 –

回答

0

你在找這樣的事嗎?

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"); 
} 
+0

這是不好的無論如何,你正在捕捉所有的例外,並不是所有的都與超時有關! –

+0

是的,您需要過濾異常,但是現在的代碼,沒有什麼能夠捕捉異常。 – 37Stars