我有一个相当奇怪的问题,我不确定如何解决或者我是否能解决它。
我已经对这个问题做了一些研究,但找不到导致问题的答案。
处遵循了一个相当简单的指南在启用 SSL
并将 controller
更改为要求https后,我收到以下错误:
' /'中的服务器错误应用
对象引用未设置为对象的实例。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.NullReferenceException:不是对象引用 设置为对象的实例。
来源错误:
执行期间生成了未处理的异常 当前的网络请求。有关的来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈追踪:
[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(任务 任务)+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(任务 任务)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext()+ 427 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 Microsoft.AspNet.Identity.Owin.d__0.MoveNext()+641 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务)+93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)+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(任务 任务)+52 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__2.MoveNext() +272 System.Runtime.ExceptionServices.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
关闭SSL
修复此问题,我也知道在startup.auth
中评论 app_start
修复了SSL
上的问题。< / p>
有谁知道为什么会这样?
答案 0 :(得分:33)
与Sandeep的答案类似,我还更新了cookie身份验证提供程序。除了吞下错误之外,我抛出了异常,因此您可以看到底层问题是什么:
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;
})
}
});
我的根本问题是我改变了模型并忘记添加新的迁移。
答案 1 :(得分:19)
我遇到了类似的错误,但是当我从DropCreateDatabaseIfModelChanges&lt;更改EF配置时语境GT; DropCreateDatabaseAlways&lt;上下文取代。
我不确定您的错误原因但似乎是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 => { }
}
});
答案 2 :(得分:7)
我同意添加&#34; OnException = context =&gt; {}&#34;解决了显示的异常,但我刚才看到的下一个错误可能是一个常见原因,因此在此修复之前尝试了第一步。
我现在有一个错误,告诉我上下文的模型支持已经改变。这可能意味着尝试添加迁移和更新数据库可以为遇到此问题的其他ASP.NET身份用户解决此问题,如果失败则添加上面的行。这也会建议一些基本的检查,例如&#34;我可以连接到数据库吗?&#34;如果您看到此Owin Security异常,也可能值得检查。一旦这个子序列错误得到修复,我可以愉快地删除OnException行,并且该站点仍然正常工作。
答案 3 :(得分:4)
我也有这个问题,并通过清除cookie来解决它。
您的Cookie似乎无效。
答案 4 :(得分:2)
可能引发此异常的原因是因为创建ApplicationDbContext
时出现问题。
在我的情况下,我添加了迁移,并设置
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
我开始得到和你一样的错误。
当我尝试访问数据库中的任何对象时,DbContext抛出了一个错误,说AspNetUsers
已经存在,因为之前我已经运行了我的代码而没有启用迁移,因此创建了数据库, Identity所需的所有正确表格,一旦我执行了EnableMigrations,并设置了初始化程序,就会抛出错误,表明该表已经存在。
在你的情况下,我的猜测是ApplicationDbContext存在一些潜在的问题,在启动之前,尝试以下 之前调用Config.Auth方法:
var ctx = new ApplicationDbContext(...);
var count = ctx.Users.Count();
查看它是返回计数还是抛出异常。
答案 5 :(得分:2)
是的,我有同样的问题,我从Azure下载了一个数据库。 然后我更改我的应用程序以使用它 我的应用程序有一个新字段,该字段在azure备份中不存在 迁移不同步。
更新 - 数据库(在启用迁移的软件包管理中)完成了这一操作。
答案 6 :(得分:2)
更新 - 包管理器控制台中的数据库 为我做了诀窍
答案 7 :(得分:1)
这些答案似乎都很有帮助,并指出了数据库混乱的趋势。我遇到了这个问题,因为我更新了我的模型并且没有更新数据库。现在我每次更改模型时都会手动调用Add-Migration和Update-Database,在我尝试调试我的网站之前,我已经忘记了这一步。
答案 8 :(得分:1)
答案 9 :(得分:0)
我遇到了同样的问题,因为SQL数据库位于防火墙之后,您需要在每次更改时添加本地IP。
请参阅Microsoft的链接以了解所有这些方法:
答案 10 :(得分:0)
尝试从项目中删除迁移
一旦我为Identity DB启用了数据库迁移,我就和我在一起
删除整个迁移文件夹后重建问题消失
它可能适合你
答案 11 :(得分:0)
在我的案例中清除OWIN cookie。
答案 12 :(得分:0)
在阅读了一些答案后,尝试使用IE而不是Chrome,并且没有崩溃,我只是关闭了Chrome并重新启动了应用。它奏效了。
答案 13 :(得分:0)
我错过了在表[AspNetRoles]中添加角色。这解决了这个问题。
答案 14 :(得分:0)
原因还可能是因为用于编译和运行应用程序的.Net Framework版本不同。只需在web.config中明确指定版本:
return