NullReferenceException для ValueProviderFactoryCollection ASP. NET MVC - PullRequest
0 голосов
/ 03 февраля 2020

Мой 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();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...