尝试启用owin&我的Web Api项目的AspNet标识(在VS 2013 + .Net 4.5.1中)我在每个有效或无效(请求到无存在的控制器)请求中收到以下错误:
<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);
}
}
}
答案 0 :(得分:92)
我最初使用身份验证创建了项目,但后来决定禁用它。我不得不在WebApiConfig.cs文件中删除它。如果您打算启用身份验证,请确保具有此功能。
max(postId)+1
答案 1 :(得分:88)
我终于找到了问题!在逐行比较新创建的项目并且没有发现任何差异之后,我检查了两个项目的参考文献,是的!...所有问题都来自缺失的包:
Microsoft.Owin.Host.SystemWeb
我不知道为什么这个打包在包安装阶段错过了,但奇怪的是,为什么没有抛出任何构建异常?或没有任何DLL引用错误?
答案 2 :(得分:7)
我的情况,因为web.config中的这个设置失败了。希望这有助于某人避免它。
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
答案 3 :(得分:3)
如果你真的不需要OWIN,你可以直接卸载它。
一种方法是在Nuget Manager中卸载每个OWIN库,顺序将由它们的依赖项决定。
完成此操作后,您不需要任何与OWIN相关的代码或配置。这对我来说最好,因为我使用的是Windows身份验证。
答案 4 :(得分:3)
我遇到了同样的问题。该程序包未出现在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>
答案 5 :(得分:1)
在Web.config中将owin:AutomaticAppStartup
密钥更改为true
为我修复此问题,即将其更改为:
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
到此:
<appSettings>
<add key="owin:AutomaticAppStartup" value="true" />
</appSettings>
答案 6 :(得分:0)
对于.Net框架,将 runAllManagedModulesForAllRequests 属性添加到 web.config 中的模块。这样我就保留了身份验证。
citizen
答案 7 :(得分:0)
如果以上都没有帮助,您可以尝试使用以下命令重新安装: 更新包 Microsoft.Owin.Host.SystemWeb -reinstall
或者确保 owin 实际运行时在 Startup 类中使用一个简单的语句
对我来说,它有助于在 web.config 中添加程序集:
<system.web>
<compilation debug="true" targetFramework="4.5.2" batch="false" optimizeCompilations="true" defaultLanguage="C#">
<assemblies>
<add assembly="Microsoft.Owin.Host.SystemWeb" />
</assemblies>
答案 8 :(得分:0)
我终于找到问题了!在与新创建的项目逐行比较并发现没有区别后,我检查了两个项目的引用,是的!...所有问题都来自缺少包:
Microsoft.Owin.Host.SystemWeb