Asp. Net Web Api 2.2: недействительный 'MediaTypeFormatter' недопустим - PullRequest
0 голосов
/ 30 апреля 2020

У меня возникли некоторые проблемы с приложением Asp. Net Web Api в нашей производственной среде, некоторые запросы API (около 1% из них) вызывают sh периодически со следующим сообщением об исключении:

Нулевое значение MediaTypeFormatter недопустимо. Имя параметра: formatters

Кажется, что все эти ошибки происходят случайно, и в этих случаях поток выполнения даже не достигает конечных точек ApiController.

Кто-нибудь знает, как решить эту проблему? Любая помощь будет принята с благодарностью.

Больше информации и полная трассировка стека:

  • . Net Framework 4.5
  • Asp. Net Web Api 2.2 (Microsoft.As pNet .WebApi v5.2.3)
  • IIS 8.5
  • Windows сервер 2012 R2
"ExceptionMessage": "A null 'MediaTypeFormatter' is not valid.
Parameter name: formatters",
"ExceptionType": "System.ArgumentException",
"StackTrace": "   at System.Net.Http.Formatting.MediaTypeFormatterCollection.VerifyAndSetFormatters(IEnumerable'1 formatters)
   at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable'1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)
   at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable'1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)
   at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable'1 formatters, IFormatterLogger formatterLogger)
   at System.Web.Http.ModelBinding.FormatterParameterBinding.<ExecuteBindingAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.HttpActionBinding.<ExecuteBindingAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"

РЕДАКТИРОВАТЬ 04/05 / 2020

  • Наша конфигурация производственной среды состоит из 7 серверов с балансировщиком нагрузки
  • Проблема возникла только в одном пуле приложений на одном сервере
  • После перезапуска приложения проблема исчезла (мы все еще исследуем проблему, мы не хотим, чтобы это повторилось).
...