没有OWINauthenticationpipe理器与请求相关联

在尝试启用OWIN&AspNet Identity到我的Web Api项目(在VS 2013 + .Net 4.5.1中)后,我在每个有效或无效(request to none exists控制器)请求中收到以下错误:

<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> 

当我在debugging模式检查,没有例外处理! 另外,我意识到Configuration in Startup类永远不会被调用(确实从来没有被debugging器捕获)。 这里是启动代码:

 [assembly: OwinStartup(typeof(bloob.bloob.Startup))] namespace bloob.bloob { public partial class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); } } } 

我最初创build与authentication的项目。 我不得不在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)); 

我终于find了问题! 与一个新创build的项目逐行比较,发现没有区别后,我检查了两个项目的参考和是的!…所有的问题是从缺less的包:

 Microsoft.Owin.Host.SystemWeb 

我不知道为什么在包安装阶段错过了这个包,但奇怪的是为什么没有任何构buildexception抛出? 或没有任何DLL参考错误?

我的情况,它从web.config中的这个设置失败。 希望这有助于避免它。

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

如果你实际上不需要OWIN,你可以简单地卸载它。

一种方法是在Nuget Manager中卸载每个OWIN库,顺序将由它们的依赖关系决定。

完成这一步后,您不需要任何OWIN相关的代码或configuration。 因为我正在使用Windows身份validation,这对我来说最好。

我有同样的问题。 该包没有出现在NuGet包pipe理器中。 我在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> 

在Web.config中将owin:AutomaticAppStartup关键字更改为true ,为我解决了这个问题,即将其更改为:

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

对此:

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