2016-05-10 9 views
0

Ich bin Anfänger Fehlerbehandlung in global.asax in asp.net mvc5.In Application_Error kann ich alle URL erreichen, aber gibt es eine Möglichkeit, Post-Parameter zu sehen der Methode in global.asax, um der Bedeutung den Fehler zu geben. Im Detail habe ich Application_Error() wie folgt.So erreichen Sie Parameter der Methode in der globalen Fehlerbehandlung in asp.net mvc5

protected void Application_Error() 
    { 
     HttpContext httpContext = HttpContext.Current; 

     int userid = Convert.ToInt32(httpContext.User.Identity.Name.Split('_')[1]); 
     if (httpContext != null) 
     { 
      RequestContext requestContext = ((MvcHandler)httpContext.CurrentHandler).RequestContext; 

      if (requestContext.HttpContext.Request.IsAjaxRequest()) 
      { 


       httpContext.Response.Clear(); 
       string controllerName = requestContext.RouteData.GetRequiredString("controller"); 
       IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); 
       IController controller = factory.CreateController(requestContext, controllerName); 
       ControllerContext controllerContext = new ControllerContext(requestContext, (ControllerBase)controller); 
       JsonResult jsonResult = new JsonResult(); 
       jsonResult.Data = new { Success = false, Message = "Error" }; 
       jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet; 
       jsonResult.ExecuteResult(controllerContext); 
       httpContext.Response.End(); 
      } 

     } 
    } 

Was passiert, wenn Sie nehmen einen Fehler in der Methode wie unten

public JsonResult(ExampleModel example){ 
    return Json("");} 

Gibt es eine Möglichkeit, die Eigenschaften der Klasse Beispielmodell in Application_Error() zu erreichen?

Antwort

2

Ich bin mir nicht sicher, ob es eine Out-of-the-Box-Möglichkeit gibt, das gesamte ExampleModel Objekt in global.asax zu bekommen, aber Sie können sicher auf einzelne Anfrageparameter zugreifen, aus denen dieses Objekt besteht. Sprich, wenn die Modelleigenschaft hat ExampleProperty die mit Anfrage gebucht wurde, dies sollte man seinen Wert geben:

requestContext.HttpContext.Current.Request["ExampleProperty"] 
+0

Danke für die Antwort seiner immer spezifische Eigenschaft von Modellklasse – mayk

+0

@mayk, yup. Um das gesamte Objekt zu erhalten, müssen Sie die Modellbindung möglicherweise manuell durchführen. In einem normalen Ablauf von Dingen ist dies, was ASP.NET MVC-Pipeline für Sie tut, während Aufruf Aktionsmethode. – Andrei

+0

Ja, Thans wieder. Sie haben Recht, spezifische Eigenschaftsprüfung ist für alle besser. – mayk