如果您重定向,則無法發送複雜對象。我的意思是你可以使用Session
和TempData
(它在幕後使用會話),但它是醜陋的,我會建議反對。
如果你想複雜的對象不重定向。設置適當的狀態代碼和轉讓這是更爲REST風格和搜索引擎友好:
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
Context.ClearError();
var routeData = new RouteData();
routeData.Values["controller"] = "error";
routeData.Values["action"] = "Http500";
routeData.Values["exception"] = exception;
IController errorController = new ErrorController();
errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));
}
其中ErrorController看起來是這樣的:
public class ErrorController : Controller
{
public ActionResult Http500(Exception exception)
{
Response.StatusCode = 500;
// TODO: do something with the exception like logging it
// and render some view explaining the annoyed user
// that something very wrong happened to your application
// which wasn't your fault of course or something
}
}
如果你重定向你不能發送複雜的對象。
你可以把它放在tempdata中嗎?通常我只是記錄異常並使用日誌來調試 – 2011-02-07 21:56:08
@Phil,`TempData`和重定向來處理異常? 302狀態碼而不是500?不感覺非常RESTful或SEO友好。 – 2011-02-07 22:02:53