Я знаю эту ошибку и уже заданы десятки вопросов. Но мой вопрос заключается не в «почему», а в том, как «отлаживать».Как отлаживать «Индекс был за пределами массива» в DNN
Я установил DNN CMS и разработал для этого модуль. Иногда это порождает эту ошибку:
at System.Collections.Generic.List`1.Enumerator.MoveNext()
at System.Linq.Enumerable.<ConcatIterator>d__58`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at System.Web.Http.Services.DefaultServices.GetServices(Type serviceType)
at System.Web.Http.ServicesExtensions.GetServices[TService](ServicesContainer services)
at System.Web.Http.ModelBinding.ModelBinderAttribute.GetModelBinderProvider(HttpConfiguration configuration)
at System.Web.Http.ModelBinding.ModelBinderAttribute.GetModelBinder(HttpConfiguration configuration, Type modelType)
at System.Web.Http.ModelBinding.ModelBinderAttribute.GetBinding(HttpParameterDescriptor parameter)
at System.Web.Http.ModelBinding.DefaultActionValueBinder.GetParameterBinding(HttpParameterDescriptor parameter)
at System.Array.ConvertAll[TInput,TOutput](TInput[] array, Converter`2 converter)
at System.Web.Http.ModelBinding.DefaultActionValueBinder.GetBinding(HttpActionDescriptor actionDescriptor)
at System.Web.Http.Tracing.Tracers.ActionValueBinderTracer.System.Web.Http.Controllers.IActionValueBinder.GetBinding(HttpActionDescriptor actionDescriptor)
at System.Web.Http.Controllers.HttpActionDescriptor.get_ActionBinding()
at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem..ctor(HttpControllerDescriptor controllerDescriptor)
at System.Web.Http.Controllers.ApiControllerActionSelector.GetInternalSelector(HttpControllerDescriptor controllerDescriptor)
at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)
at System.Web.Http.Tracing.Tracers.HttpActionSelectorTracer.<>c__DisplayClass2.<System.Web.Http.Controllers.IHttpActionSelector.SelectAction>b__0()
at System.Web.Http.Tracing.ITraceWriterExtensions.TraceBeginEnd(ITraceWriter traceWriter, HttpRequestMessage request, String category, TraceLevel level, String operatorName, String operationName, Action`1 beginTrace, Action execute, Action`1 endTrace, Action`1 errorTrace)
at System.Web.Http.Tracing.Tracers.HttpActionSelectorTracer.System.Web.Http.Controllers.IHttpActionSelector.SelectAction(HttpControllerContext controllerContext)
at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
at System.Web.Http.Tracing.Tracers.HttpControllerTracer.<ExecuteAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__18`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()
Как вы можете видеть, нет никакого следа моего кода в любом месте. Это всего системный код, и я не знаю, как устранить его и отладить. Я просто перезапускаю свой пул приложений, и все работает нормально, и через некоторое время снова появляется эта ошибка.
Как отладить эту ошибку? Как найти корень проблемы?
Для тех, кто считает это модулем! Это простой Web-Api, как вы видите на этой картинке:
делить код и указывать линию, которая дает вам исключение –
Уважаемый @ не повезло, если бы я знал, какая часть моего кода вызывает эту проблему, я бы не стал задавать этот вопрос, конечно. : D Проблема в том, что я не могу поделиться всем своим проектом здесь. Я не собираюсь делиться чем. –
Я тоже работаю с DNN, и я знаю, что слишком сложно отслеживать проблему, особенно если вы новичок в DNN, сначала убедитесь, что вы устанавливаете 'debug =" false "' inside' web.config', если этот код часть 'dll', добавьте' .pdb' файлы, а затем проверьте таблицу «EventLogs». сообщите, если вы сделали эту часть или нет. –