Мой ASP. NET MVC веб-сайт иногда выдает эту ошибку:
[NullReferenceException: ссылка на объект не установлена на экземпляр объекта.]
System.Web. Mvc .ValueProviderFactoryCollection.GetValueProvider (ControllerContext controllerContext) + 69
System.Web. Mvc .ControllerBase.get_ValueProvider () + 38
System.Web. Mvc .PontrolA (ControllerContext controllerContext, ParameterDescriptor параметрDescriptor) + 76
System.Web. Mvc .ControllerActionInvoker.GetParameterValues (ControllerContext controllerContext, ActionDescriptor actionDescriptor) + 136
System.Web. Mvc.> 1034 *. c__DisplayClass3_1.b__0 (AsyncCallback asyncCallback, Object asyncState) + 1082
System.Web. Mvc .Asyn c .WrappedAsyncResultBase 1.Begin(AsyncCallback callback, Object state, Int32 timeout) +163<br>
System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +463<br>
System.Web.Mvc.<>c.<BeginExecuteCore>b__152_0(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +45<br>
System.Web.Mvc.Async.WrappedAsyncVoid
1.CallBeginDelegate (обратный вызов AsyncCallback, системный вызов * 1012S * .WW) . Mvc .Asyn c .WrappedAsyncResultBase`1.Begin (обратный вызов AsyncCallback, состояние объекта, Int 32 таймаута) + 163
Вот мой ActionHeader:
public ActionResult Index(string tri = "Date_creation Desc", string parti = "0"){
if (Session["Utilisateur"] != null)
{
CroisementsModel lc = new EquilibreRepository().GetAllMessages((int)Session["id_Groupe"], tri, parti);
lc.utilisateur = Session["Utilisateur"].ToString();
return View("Index", lc);
}
return RedirectToAction("Index", "Login", null);
}
Когда возникает эта ошибка, мне нужно перезапустить веб-сайт IIS, и все работает идеально в течение определенного количества раз .
Если у кого-то есть идея ...
Редактировать: ошибка возникает из-за этой функции в global.asax, я использовал для включения CrossDomainRequest:
protected void Application_BeginRequest () {
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
//These headers are handling the "pre-flight" OPTIONS call sent by the browser
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.End();
}
}