首页 > 代码库 > Asp.Net WebApi 集成OWIN架构后,出现 “没有 OWIN 身份验证管理器与此请求相关联” 的解决办法
Asp.Net WebApi 集成OWIN架构后,出现 “没有 OWIN 身份验证管理器与此请求相关联” 的解决办法
在Asp.Net WebApi 项目中开启OWIN模块之后,如果没有在OWIN的Startup类中配置认证方式,调用WebApi的相关Controller和Action就会出现如下异常:
出现错误。没有 OWIN 身份验证管理器与此请求相关联。ExceptionType:System.InvalidOperationExceptionStackTrace: 在 System.Web.Http.Owin.PassiveAuthenticationMessageHandler.SuppressDefaultAuthenticationChallenges(HttpRequestMessage request)在 System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext()--- 引发异常的上一位置中堆栈跟踪的末尾 ---在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)在 System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext()
如果是英文版的VisualStudio,以上异常信息会是:No OWIN authentication manager is associated with the request
原因是因为我们在Asp.Net WebApi项目使用了OWIN框架,但是没有指定OWIN框架使用的认证方式,而WebApi又默认启用了身份认证,所以WebApi无法认证到来的Http请求,抛出异常。
我们可以看到下面的OWIN框架Startup类的Configuration方法为空,没有为OWIN制定身份认证方式。
using System;using System.Collections.Generic;using System.Linq;using Microsoft.Owin;using Microsoft.Owin.Security;using Microsoft.Owin.Security.Cookies;using Owin;[assembly: OwinStartup(typeof(Daimler.CdnMgmt.Web.Startup))]namespace Daimler.CdnMgmt.Web{ public partial class Startup { public void Configuration(IAppBuilder app) { } }}
解决方法有两个:
第一:在OWIN的Startup类中指定默认的认证方式。
using System;using System.Collections.Generic;using System.Linq;using Microsoft.Owin;using Microsoft.Owin.Security;using Microsoft.Owin.Security.Cookies;using Owin;[assembly: OwinStartup(typeof(Daimler.CdnMgmt.Web.Startup))]namespace Daimler.CdnMgmt.Web{ public partial class Startup { public void Configuration(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); app.UseCookieAuthentication(new CookieAuthenticationOptions()); } }}
Asp.Net WebApi 集成OWIN架构后,出现 “没有 OWIN 身份验证管理器与此请求相关联” 的解决办法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。