[ELMA3] Некорректный ответ сервера (The requested URL did not return JSON): примеры и получение информации об ошибке
Иногда при работе с веб-частью отображается всплывающее окно с ошибкой:
Error! The requested URL did not return JSON. или Parsing JSON Request failed.
Пример подобной ошибки приведён на скриншоте:
Данная ошибка означает, что от сервера был получен некорректный ответ. Для выяснения причин ошибки, необходимо узнать ответ сервера. Это можно сделать в браузере с помощью инструментов разработчика.
Получение ответа сервера в Mozilla Firefox:
1. Открыть ELMA в браузере, нажать клавишу F12 либо сочетание Ctrl+Shit+I – откроется консоль с инструментами разработчика.
2. Воспроизвести ошибку.
3. Перейти в консоли на вкладку Сеть (Network).
4. На вкладке Сеть отображаются выполненные методы. Кликнуть по строке с нужным методом (тот метод, который появился сразу после выполнения действия, обычно последний).
5. В правой части консоли перейти на вкладку Ответ (Response). Подождать, пока на вкладке отобразится ответ сервера.
6. В этой вкладке будет расположен ответ сервера и стек-трейс ошибки, например, такой:
<h2>К сожалению, произошла ошибка.</h2> <h3>В случае повторения ошибки обратитесь к администратору системы, передав ему текст ошибки </h3> <div> System.InvalidCastException: Не удалось привести тип объекта "Telerik.Web.Mvc.Infrastructure.AggregateFunctionsGroup" к типу "EleWise.ELMA.Model.Entities.IEntity".</h3> <pre id="st_81ed0915_8e45_4a39_bf70_13f04e40230b"class="exception"> в System.Linq.Enumerable.<CastIterator>d__b1`1.MoveNext() в System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) в EleWise.ELMA.Web.Mvc.Controllers.TablePartController.GetGridResult(TablePartData data) в EleWise.ELMA.Web.Mvc.Controllers.TablePartController.Grid(GridCommand command, TablePartRequestData data) в lambda_method(Closure , ControllerBase , Object[] ) в System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) в System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) в System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) в System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) в System.Web.Mvc.Controller.ExecuteCore() в System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) в System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5() в System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0() в Orchard.Mvc.Routes.ShellRoute.HttpAsyncHandler.EndProcessRequest(IAsyncResult result) в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Получение ответа сервера в Google Chrome:
1. Открыть ELMA в браузере, нажать клавишу F12 либо сочетание Ctrl+Shit+I – откроется консоль с инструментами разработчика.
2. Воспроизвести ошибку и закрыть всплывающее окно.
3. Перейти в консоли на вкладку Сеть (Network).
4. На вкладке Сеть отображаются выполненные методы. Кликнуть по строке с нужным методом (тот метод, который появился сразу после выполнения действия, обычно последний).
5. В правой части консоли появится дополнительная информация о методе. Перейти на вкладку Ответ (Response). В этой вкладке будет расположен ответ сервера и стек-трейс ошибки.