在上下文中找不到owin.Environment项

gra*_*row 28 .net asp.net owin katana asp.net-identity

微软最近推出了新的ASP.NET身份 - 替换旧的(简单)成员资格.不幸的是,我不能在我的旧项目中使用这个新的成员资格系统,因为它抛出System.InvalidOperationException:在上下文中找不到owin.Environment项.这是一个已知的错误,但微软对这个问题保持沉默.重现此错误的最简单方法 - 在VS 2013(使用Web Tools 2013 Preview Refresh)创建新的Web应用程序(MVC,WebForms或WebApi - 无关紧要),然后转到登录页面.它会工作.然后将应用程序中的命名空间更改为原始命名空间以外的任何内容,登录页面将抛出该错误 将名称空间更改回原始名称(您在创建项目时使用的名称空间)将解决此问题.

它看起来像.net存储某个与原始命名空间相关的东西,但是我找不到它在哪里和哪里,它不在项目文件夹中.我知道stackoverflow不是bug报告的地方,我只是希望有人已经找到了解决这个问题的方法,或者参与ASP.NET身份开发的人会看到这个.

小智 26

很可能它找不到OWIN Startup类.Startup类的默认约定是[AssemblyName] .Startup.如果您不再遵循该约定,则需要在Web.Config中指定Startup类的全名.

当无法找到Startup类时,Microsoft.Owin.Host.SystemWeb包的下一个版本现在会抛出详细的异常消息.

  • 将<appSettings> <add key ="owin:AppStartup"value ="[Namespace] .Startup,[AssemblyName]"/> </ appSettings>添加到web.config中修复此问题.谢谢! (13认同)

Lui*_*lho 8

我创建了两个名为TesteMvc5.2和TesteMvc5.0的新项目,这两个项目都没有启动

这是因为默认命名空间与程序集名称不同.但在我放线之后

<add key="owin:AppStartup" value="TesteMvc5._2.Startup, TesteMvc5.2" />
Run Code Online (Sandbox Code Playgroud)

在web.config上运行正常.


ces*_*oya 8

我遇到了同样的问题,在确定此行在web.config中后修复了它:

<add key="owin:AutomaticAppStartup" value="true" />
Run Code Online (Sandbox Code Playgroud)


Gat*_*ics 8

清理 ASP.NET 临时文件帮助我解决了这个确切的问题


小智 8

我有完全相同的错误,但事实证明我的web.config中有另一个配置问题.我的web.config在system.web下的编译元素中缺少属性defaultLanguage ="c#".

在这种情况下,它将默认为VB.因此,除非您使用VB编写Startup类,否则应将默认语言更改为C#.

不正确:

<compilation debug="true" optimizeCompilations="true" targetFramework="4.6.1">
Run Code Online (Sandbox Code Playgroud)

这是正确的(除非你使用VB):

<compilation debug="true" defaultLanguage="c#" optimizeCompilations="true" targetFramework="4.6.1">
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这为我修复了EPiServer Alloy项目. (4认同)
  • 你到底是怎么想出来的? (4认同)