Диспетчер проверки подлинности 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 55

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>

изменение owin:AutomaticAppStartup ключ true в Интернете.config исправил это для меня, т. е. изменить его от:

<appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>

для этого:

<appSettings>
    <add key="owin:AutomaticAppStartup" value="true" />
</appSettings>