Диспетчер проверки подлинности OWIN не связан с запросом
после попытки включить OWIN & AspNet Identity для моего проекта Web Api (в VS 2013 + .Net 4.5.1) я получаю следующую ошибку в каждом действительном или неверном(запрос к none exist controller) запросах:
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
No OWIN authentication manager is associated with the request.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace>
at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SuppressDefaultAuthenticationChallenges(HttpRequestMessage request) at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.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.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext()
</StackTrace>
</Error>
как я проверил в режиме отладки, никаких исключений не обрабатывается тоже! И я понял, что Configuration
на Startup
класс никогда не вызывается (действительно никогда не ловится отладчиком). вот код для запуска :
[assembly: OwinStartup(typeof(bloob.bloob.Startup))]
namespace bloob.bloob
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
6 ответов:
Я изначально создал проект с аутентификацией. Мне пришлось удалить это в WebApiConfig.cs-файл.
// Web API configuration and services // Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
Я нашел проблему наконец! После сравнения строки за строкой с вновь созданным проектом и не найдя никакой разницы , я проверил ссылки на оба проекта и да!... Вся проблема была в отсутствующем пакете:
Microsoft.Owin.Host.SystemWeb
Я не знаю, почему этот пакет пропущен на этапе установки пакета, но странный момент заключается в том, почему не было создано исключение сборки? или нет никакой ошибки ссылки dll?
мой случай, это не удалось, так как эти настройки в интернете.конфиг. Надеюсь, это поможет кому-то избежать его.
<appSettings> <add key="owin:AutomaticAppStartup" value="false" /> </appSettings>
Если вам на самом деле не нужен OWIN, вы можете просто удалить его.
один из способов сделать это-в NuGet Manager удалить каждую библиотеку OWIN, порядок будет продиктован их зависимостями.
после того, как это будет сделано, вам не нужен какой-либо код или конфигурация, связанные с OWIN. это сработало лучше всего для меня, так как я использую Windows auth.
у меня была та же проблема. Пакет не появлялся в диспетчере пакетов NuGet. Я добавил ссылку в пакетах.config:
<package id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" targetFramework="net45" />
и ссылка в файле проекта (xxx. csproj):
<Reference Include="Microsoft.Owin.Host.SystemWeb"> <HintPath>..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath> </Reference>