微软最近推出了新的ASP.NET身份 - 替换旧的(简单)成员资格.不幸的是,我不能在我的旧项目中使用这个新的成员资格系统,因为它抛出System.InvalidOperationException:在上下文中找不到owin.Environment项.这是一个已知的错误,但微软对这个问题保持沉默.重现此错误的最简单方法 - 在VS 2013(使用Web Tools 2013 Preview Refresh)创建新的Web应用程序(MVC,WebForms或WebApi - 无关紧要),然后转到登录页面.它会工作.然后将应用程序中的命名空间更改为原始命名空间以外的任何内容,登录页面将抛出该错误 将名称空间更改回原始名称(您在创建项目时使用的名称空间)将解决此问题.
它看起来像.net存储某个与原始命名空间相关的东西,但是我找不到它在哪里和哪里,它不在项目文件夹中.我知道stackoverflow不是bug报告的地方,我只是希望有人已经找到了解决这个问题的方法,或者参与ASP.NET身份开发的人会看到这个.
我觉得我遇到了与此主题中描述的问题相同的问题.我正在开发一个在本地运行良好的ASP.NET MVC Web应用程序.但是,当使用IIS7部署到我们的Windows Server 2008时,尝试登录时出现以下错误:
在上下文中找不到owin.Environment项.
这是触发此错误的行:
return _signInManager ?? HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
Run Code Online (Sandbox Code Playgroud)
我尝试了所有我能找到的东西:
<add key="owin:AppStartup" value="My_App.Startup,My-App"/>web.config脚趾.我的应用程序在其名称中有一个连字符,但这应该不是问题,对吧?<add key="owin:AutomaticAppStartup" value="true"/>到web.config.<modules runAllManagedModulesForAllRequests="true">到web.config.Microsoft.Owin.Host.SystemWeb已安装并在bin文件夹中.它在当地工作得很好.我错过了什么?
这不是此主题的重复.我从那里尝试过解决方案(参见我的#1)但没有成功.另外,我还没有更改名称空间.
编辑 一个解决方案是在web.config中显式注册OwinHttpHandler但这有一些奇怪的副作用(我的CSS和JavaScript不再加载,状态404?):
<handlers>
<add name="OWIN" path="*" verb="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler" />
</handlers>
Run Code Online (Sandbox Code Playgroud)