英文则是:No owin.Environment item was found in the context 这个错误源自于:
private IAuthenticationManager AuthenticationManager {
get {
return HttpContext.GetOwinContext().Authentication;
}
}使用的是ASP.NET Identity身份认证系统,在使用AuthenticationManager的时候,发生了一个异常。提示“在上下文中找不到 owin.Environment 项”,百度谷歌半天无果。 之后感觉是自己缺少Startup类的原因,在项目根目录加入了一个cs文件,代码如下:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartupAttribute(typeof(NovelSite.Startup))]
namespace NovelSite
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}运行,仍然抛出异常,按照ASP.NET Identity登录原理一文中所说:
每一个OWin的应用程序都需要有一个start up的类,用来声明我们要使用的OWin组件(即中间件)。Start up 类有以下几种声明方式。
- 命名约定: Owin会扫描在程序集的根下名叫 startup的类作为默认启动配置类
- OwinStartup 标签
[assembly: OwinStartup(typeof(StartupDemo.TestStartup))]- 我在web.config已经加了和,Startup.cs也加了OwinStarup标签,仍然出错。
之后仔细看了一下AutomaticAppStartup的意思,这个是OWIN的自动发现,结果是false关闭,删掉这条之后,成功运行。