2014-11-24 59 views
0

如何使用NLog獲取有關本地錯誤的詳細信息?在MVC應用程序中使用NLog

到現在爲止我有這樣的:

private static Logger logger = LogManager.GetCurrentClassLogger(); 

public ActionResult Index() 
{ 
    try 
    { 
     var domain = db.Works.ToList(); 

     var model = Mapper.Map<IList<Work>, IList<WorkIndexViewModels>>(domain); 

     return View(model); 
    } 
    catch (Exception e) 
    { 
     logger.Error("Error in Index: " + e); 
    } 
} 

如果我把捕捉後的回報,該模型是超出範圍。

如果我在try中放入return,我會從Action獲得「並非所有代碼路徑都返回一個值」。

那麼我該如何解決這個問題?

回答

2

既然你已經捕獲的錯誤並不能顯示所請求的頁面,你可以在捕捉範圍內重定向到錯誤頁面:

catch (Exception e) 
    { 
     logger.Error("Error in Index: " + e); 
     return RedirectToAction("Index", "Error"); // Redirect to error controller or page 
    } 

或者,也可能更合適,你可以有您的操作會引發500錯誤,以便您的web.config中的錯誤配置可以正確處理重定向。

catch (Exception e) 
    { 
     logger.Error("Error in Index: " + e); 
     return new HttpStatusCodeResult(500); // Raise internal server error 
    } 
+0

嗨傑森,謝謝!抱歉耽擱了。 – Patrick 2015-01-22 14:55:47

+0

沒問題 - 很高興爲你效勞! – 2015-01-23 03:07:44