为什么在新项目上抛出一个空exception?
我有一个相当奇怪的问题,我不知道如何解决或如果我可以修复它。
我已经对这个问题做了一些研究,但是找不到解决这个问题的答案。
我正在遵循http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-上的一个相当简单的指南-openid点login
并启用SSL
并更改controller
要求https我得到以下错误:
“/”应用程序中的服务器错误。
你调用的对象是空的。
说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。
exception详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
源错误:
在执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。
堆栈跟踪:
[NullReferenceException:对象引用未设置为对象的实例。]
Microsoft.Owin.Security.Cookies.CookieAuthenticationProvider.Exception(CookieExceptionContext上下文)+49
Microsoft.Owin.Security.Cookies.d__2.MoveNext()+3698 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()+24 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext()+810 System.Runtime.CompilerServices .TaskAwaiter.ThrowForNonSuccess(任务任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext()+427 System.Runtime.CompilerServices.TaskAwaiter .ThrowForNonSuccess(任务任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641 System.Runtime.CompilerServices.TaskAwaiter .ThrowForNonSuccess(任务任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641 System.Runtime.CompilerServices.TaskAwaiter .ThrowForNonSuccess(任务任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641 System.Runtime.CompilerServices.TaskAwaiter .ThrowForNonSuccess(任务任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult()+21 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext()+287 System.Runtime.CompilerServices .TaskAwaiter.ThrowForNonSuccess(任务任务)+93
(System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification .ExceptionDispatchInfo.Throw()+22 Microsoft.Owin.Host.SystemWeb.Infrastructure.ErrorState.Rethrow()+33 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar)+150
Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar)+42
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+415 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+155版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.34237
closuresSSL
修复了这个问题,我也知道注释掉app_start
的startup.auth
修复了SSL
上的问题。
有谁知道这是为什么发生?
与Sandeep的答案类似,我也更新了cookie身份validation提供程序。 除了吞咽错误,我抛出了exception,所以你可以看到底下的问题是什么:
app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { // Enables the application to validate the security stamp when the user logs in. // This is a security feature which is used when you change a password or add an external login to your account. OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)), /* I changed this part */ OnException = (context => { throw context.Exception; }) } });
对我来说,根本的问题是我改变了模型,忘记添加一个新的迁移。
我得到类似的错误,但是当我从EFDconfiguration从DropCreateDatabaseIfModelChanges <Context>更改为DropCreateDatabaseAlways <Context>。
我不确定你的错误的原因,但它似乎是一个问题在Katana项目https://katanaproject.codeplex.com/workitem/346
你可以尝试在上面的链接或从https://katanaproject.codeplex.com/discussions/565294
这是我在我的StartUp.Auth.cs中做的
app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager, User>( validateInterval: TimeSpan.FromMinutes(1), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)), //**** This what I did ***// OnException = context => { } } });
在创build新项目后为我运行以下更新:
update-package Microsoft.Owin
update-package Microsoft.Owin.Security
update-package Microsoft.Owin.Security.Cookies
我认为最后一个可能已经足够了。 我正在使用Visual Studio 2013(12.0.21005.1)和ASP.Net Web应用程序模板与Web API 。
我同意添加“OnException = context => {}”可以解决正在显示的exception,但是我刚才看到的下一个错误可能会提示一个常见原因,因此在此修复之前尝试第一步。
我现在有一个错误告诉我,上下文的模型已经改变了。 这可能意味着尝试添加迁移和更新数据库可能会解决此问题,遇到此问题的其他ASP.NET身份用户,如果失败,然后添加上面的行。 这也将提出一些基本检查,如“我可以连接到数据库? 也许值得检查,如果你看到这个欧文安全例外。 一旦这个子序列错误被修复,我可以愉快地删除OnException行,该网站仍然正常工作。
我也有这个问题,并通过清除cookie来解决它。
看来你的cookie是无效的。
这个exception可能被抛出的原因是因为创buildApplicationDbContext
出现问题。
在我的情况下,我添加迁移,并设置
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
而我也开始像你一样得到同样的错误。
原来,当我试图访问数据库中的任何对象,DbContext抛出一个错误,说AspNetUsers
已经存在,因为以前我已经运行我的代码没有启用迁移,因此数据库创build,所有正确的表所需的身份,一旦我做了EnableMigrations,并设置了一个初始化程序,就会抛出一个错误,表示该表已经存在。
在你的情况下,我的猜测是在ApplicationDbContext有一些根本问题,在启动之前,请在 Config.Auth方法被调用之前尝试以下方法:
var ctx = new ApplicationDbContext(...); var count = ctx.Users.Count();
看看它是否返回计数或抛出exception。
是的,我有同样的问题,我从Azure下载了一个数据库。 然后我改变我的应用程序使用这个我的应用程序有一个新的领域,不存在在azure色的备份迁移不同步。
更新数据库(在包pipe理与迁移启用)做了窍门。
包pipe理器控制台中的更新数据库为我做了窍门
这些答案似乎都很有帮助,并指出数据库混乱的趋势。 我得到这个问题,因为我已经更新了我的模型,并没有更新数据库。 现在,我每次更改模型时手动调用Add-Migration和Update-Database,在尝试debugging我的网站之前我已经忘记了这一步。
清除本地主机Cookie。 如果使用Firefox浏览此链接 。 我也有同样的错误,这里的解决scheme。
我遇到了同样的问题,这是因为SQL数据库位于防火墙之后,每次更改时都需要添加本地IP。
看到这个链接从微软所有的方式来做到这一点:
尝试从项目中删除迁移
一旦启用了身份数据库的数据库迁移,我就碰巧遇到了这种情况
删除整个迁移文件夹后重build问题消失
它可能适合你
清算OWIN cookie在我的情况下工作。
阅读一些答案后,尝试在IE浏览器而不是Chrome浏览器,看到没有崩溃,我只是closures了Chrome浏览器,并重新启动应用程序。 有效。
我错过了在表中添加angular色[AspNetRoles]。 这解决了这个问题。