Я написал простой пользовательский атрибут Authorize, который применяется к нескольким методам WebAPI. Когда я запускаю на своем локальном хосте, все работает как положено, но когда я перемещаю двоичные файлы на настоящий веб-сервер, я получаю следующее сообщение об ошибке:
"Метод не найден: 'System.Net.Http.HttpRequestMessage
System.Web.Http.Controllers.HttpActionContext.get_Request ()
Если я удаляю свой собственный атрибут Authorize, все отлично работает на обоих серверах.
Полная трассировка стека:
{"Message": "Произошла ошибка.", "ExceptionMessage": "Метод не найден: 'System.Net.Http.HttpRequestMessage System.Web.Http.Controllers.HttpActionContext.get_Request ()'.", «ExceptionType»: «System.MissingMethodException», «StackTrace»: «at MyApp.CustomAuthorizeAttribute.OnAuthorization (HttpActionContext actionContext)
в System.Web.Http.Filters.AuthorizationFilterAttribute.OnAuthorizationAsync (HttpActionContext actionContext, CancellationToken cancellationToken)
--- Конец стека трассировки от предыдущего места, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
в System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext ()
--- Конец стека трассировки от предыдущего места, где было сгенерировано исключение ---
в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext () "}
Пользовательский атрибут (урезанный, но поведение такое же):
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
try
{
var authValue = actionContext.Request.Headers.Authorization;
return;
}
}
}
Проблема, похоже, связана с тем, что свойство HttpActionContext Request. Если я пытаюсь получить значение из этого свойства, он выдает ошибку выше. Если я укажу на эту строку, она работает нормально.
Есть идеи?
* Дополнительная информация *
Я могу удалить весь код из метода OnAuthorization и просто вернуться, и он выдаст ту же ошибку.
* Подробнее *
Ошибка происходит, когда я пытаюсь получить доступ к методу Request HttpActionContext.