title: System.Web.Mvc.HandleErrorInfo wrong model type
body: <p>i create the correct model type and dont understand where this comes from. any ideas?</p>
  
  <pre>
  System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Web.Mvc.HandleErrorInfo', 
  but this dictionary requires a model item of type 'BusinessLogic.Models.ErrorCodeModel'.
     at System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value)
     at System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary)
     at System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData)
     at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
     at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
     at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
     at System.Web.Mvc.Controller.ExecuteCore()
     at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
     at System.Web.Mvc.MvcHandler.c__DisplayClass6.c__DisplayClassb.b__5()
     at System.Web.Mvc.Async.AsyncResultWrapper.c__DisplayClass1.b__0()
     at System.Web.Mvc.MvcHandler.c__DisplayClasse.b__d()
     at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
     at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
  </pre>
  
  <p>in the global.asax.cs i register a custom attribute:</p>
  
  <pre>
          public static void RegisterGlobalFilters(GlobalFilterCollection filters)
          {
              filters.Add(new Controllers.ExtendendHandleErrorAttribute());
          }
  </pre>
  
  <p>the definition looks like this:</p>
  
  <pre>
  public class ExtendendHandleErrorAttribute : HandleErrorAttribute
      {
          public override void OnException(ExceptionContext filterContext)
          {                                   
              LogErrors(filterContext);
              try
              {
                  base.OnException(filterContext);
  
                  var typedResult = filterContext.Result as ViewResult;
                  if (typedResult != null)
                  {
                      var tmpModel = typedResult.ViewData.Model;
                      typedResult.ViewData = filterContext.Controller.ViewData;
                      typedResult.ViewData.Model = CreateModel(filterContext);
                      filterContext.Result = typedResult;
                  }
              }
              catch(Exception ex) 
              {
                  new LogManager().Log("ExtendendHandleErrorAttribute error", ex);
              }
          }
  </pre>
  
  <p>interesting here that i create the ErrorCodeModel. </p>
  
  <pre>
          private ErrorCodeModel CreateModel(ExceptionContext filterContext)
          {
              var model = new ErrorCodeModel(); 
  
              if (filterContext.HttpContext.Session != null)
              {
                  var session = filterContext.HttpContext.Session;
  
                  model.SessionId = session.SessionID;
                  StateHandler stateHandler = new StateHandler(session);
                  model.FapiErrorCode = stateHandler.CustomErrorCode.ToString();               
                  try
                  {                    
                      model.GlobalData = new GlobalDataBuilder(stateHandler).Build();
                      model.ErrorMessage = model.GlobalData.ErrorText.TechnicalError;
                  }
                  catch { }
              }
  
              return model;
          }
  </pre>
  
  <p>my Web.config</p>
  
  <pre>
  &lt;customErrors mode=&quot;Off&quot; defaultRedirect=&quot;Error&quot;&gt;
        &lt;error statusCode=&quot;404&quot; redirect=&quot;Error/FileNotFound&quot; /&gt;
      &lt;/customErrors&gt;
  </pre>