So, I just implemented a basic controller on my MVC3 site to do some things before loading each view. In particular, I wanted something that could become a kind of code for the main page. As soon as I flipped this over and made all my controllers inherited from my base controller, I get this error:
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. [NullReferenceException: Object reference not set to an instance of an object.] System.Web.Mvc.Controller.PossiblyLoadTempData() +11 System.Web.Mvc.Controller.ExecuteCore() +38 System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37 System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12 System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50 System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8970061 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
I read a few places that you need to override CreateTempDataProvider () and return something else, but I can not understand the code for this. I'm relatively new to .NET and redefining something else, so I'm not sure how to do this. If you have encountered this before or know what to do, please help!
Here is my base controller and attempt to override what I have done so far to no avail:
public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { string document = Path.Combine(HttpRuntime.AppDomainAppPath, "quote.xml"); string _quote = ""; string _author = ""; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(document); XmlNode Quote = xmlDoc.SelectSingleNode("quote/text"); XmlNode Author = xmlDoc.SelectSingleNode("quote/author"); _quote = Quote.InnerText; _author = Author.InnerText; ViewData["Quote"] = _quote; } protected override ITempDataProvider CreateTempDataProvider() { return base.CreateTempDataProvider(); } }
And here is the controller that tries to start when I start debugging (I donβt know if you need it):
public class BlogController : BaseController { private DarkRobotEntities1 db = new DarkRobotEntities1();
source share