Подтвердить что ты не робот

Нет диспетчера аутентификации OWIN, связанного с запросом

После попытки включить owin и идентификатор AspNet в мой проект Web Api (в VS 2013 +.Net 4.5.1) я получаю следующую ошибку в каждом правильном или unvalid (запросе на отсутствие контроллера):

<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);
        }
    }
}
4b9b3361

Ответ 1

Наконец-то я нашел проблему! После сравнения строк за строкой с недавно созданным проектом и не обнаружив разницы, я проверил ссылки на оба проекта и да!... Вся проблема была в недостающем пакете:

Microsoft.Owin.Host.SystemWeb

Я не знаю, почему этот упакованный пропущен на этапе установки пакета, но странная причина в том, почему не возникло какое-либо исключение сборки? или никакой ошибки ссылки dll?

Ответ 2

Я изначально создал проект с аутентификацией. Мне пришлось удалить это в файле 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));

Если вы намереваетесь включить аутентификацию, убедитесь, что она настроена в WebApiConfig.cs

Ответ 3

В моем случае это не удалось с помощью этих настроек в web.config. Надеюсь, это поможет кому-то избежать этого.

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

Ответ 4

если вам действительно не нужен OWIN, вы можете просто удалить его.

один способ сделать это - в Nuget Manager удалить каждую библиотеку OWIN, порядок будет определяться их зависимостями.

После этого вам не нужен код или конфиг OWIN. это сработало лучше для меня, так как я использую windows auth.

Ответ 5

У меня была та же проблема. Пакет не отображался в диспетчере пакетов NuGet. Я добавил ссылку в packages.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>

Ответ 6

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

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

:

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