为什么在新项目上抛出一个空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_startstartup.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。

看到这个链接从微软所有的方式来做到这一点:

http://msdn.microsoft.com/en-us/library/azure/jj553530.aspx

尝试从项目中删除迁移

一旦启用了身份数据库的数据库迁移,我就碰巧遇到了这种情况

删除整个迁移文件夹后重build问题消失

它可能适合你

清算OWIN cookie在我的情况下工作。

阅读一些答案后,尝试在IE浏览器而不是Chrome浏览器,看到没有崩溃,我只是closures了Chrome浏览器,并重新启动应用程序。 有效。

我错过了在表中添加angular色[AspNetRoles]。 这解决了这个问题。