- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
AccountController.cs
包含 AccountController
类。该类的 Login
方法失败。具体来说,
var result = await SignInManager.PasswordSignInAsync(
model.Email, model.Password, model.RememberMe, shouldLockout: true);
在 Login
方法中抛出 System.NullReferenceException
。
我已验证 model.Email
、model.Password
和 model.RememberMe
不为空。下一步是深入研究 SignInManager
,它是 AccountController
上类型为 ApplicationSignInManager
的一个对象。从上面的行调用的 SignInManager
的 get
访问器是
public ApplicationSignInManager SignInManager
{
get
{
return _signInManager ??
HttpContext.GetOwinContext().Get<ApplicationSignInManager>();
}
// private set...
}
我重写为
public ApplicationSignInManager SignInManager
{
get
{
var c = HttpContext.GetOwinContext();
var m = c.Get<ApplicationSignInManager>();
return _signInManager ?? m;
}
// private set...
}
调试并确保 get
访问器未返回 null
。它不会返回 null
。这告诉我 PasswordSignInAsync
中需要的东西是 null
。
我看过the source PasswordSignInAsync
并且它在防止空引用错误方面做得很好。我还深入研究了 PasswordSignInAsync
调用的方法。我根本看不出是什么导致了空引用错误。
错误的堆栈跟踪非常神秘,我看不出有任何帮助。但为了完整起见,这里是:
[NullReferenceException: Object reference not set to an instance of an object.]
Microsoft.AspNet.Identity.<CreateAsync>d__0.MoveNext() +2112
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
Microsoft.AspNet.Identity.CultureAwaiter`1.GetResult() +123
Microsoft.AspNet.Identity.Owin.<SignInAsync>d__2.MoveNext() +408
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21
Microsoft.AspNet.Identity.CultureAwaiter.GetResult() +63
Microsoft.AspNet.Identity.Owin.<SignInOrTwoFactor>d__23.MoveNext() +2055
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
Microsoft.AspNet.Identity.CultureAwaiter`1.GetResult() +68
Microsoft.AspNet.Identity.Owin.<PasswordSignInAsync>d__29.MoveNext() +1828
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() +24
ApexRemingtonExternal.Controllers.<Login>d__2.MoveNext() in c:\Users\me\sc\project\Controllers\AccountController.cs:91
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +93
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +52
System.Runtime.CompilerServices.TaskAwaiter.GetResult() +21
System.Threading.Tasks.TaskHelpersExtensions.ThrowIfFaulted(Task task) +61
System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +114
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +66
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +49
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +117
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +323
System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +44
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +47
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +136
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +102
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +50
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +72
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +185
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +133
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +56
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +40
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +34
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +44
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +39
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +62
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +39
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +39
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +70
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +139
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +59
System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +40
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9651688
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
对于可能导致此 NullReferenceException
的原因,我将不胜感激。如果我可以添加更多详细信息(或删除一些(大笑!)),请告诉我。这是我和我公司的第一个 MVC 项目,所以我确定我破坏了一些东西。
编辑
我应该补充一点,我从项目中剥离了 Entity Framework,转而使用 LINQ to SQL,这是我们在所有其他项目中所依赖的。这意味着我必须实现我自己的 IUserStore、IRoleStore 等版本。
最佳答案
有时(特别是如果你更新 Microsoft.AspNet.Identity.Owin
)你可能会忘记添加行
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
方法public void ConfigureAuth(IAppBuilder app)
在 App_Start\Startup.Auth.cs包括这个之后一切都应该工作。
关于c# - SignInManager.PasswordSignInAsync 抛出空对象异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220597/
在ASP.NET Core 7应用程序中,可以像这样扩展IdentityUser:。我创建了一个数据库上下文:。我正在配置我的主机以使用它:。在调试运行中的应用程序时,Request.User的类型为
使用 Moq 和 xUnit 进行单元测试的新手。我正在尝试模拟在 Controller 构造函数中使用的 SignInManager 来构建单元测试。我可以找到的 SignInManager 构造函
我正在尝试使用 ASP.NET Identity 在 Web 应用程序上启用授权和身份验证。我正在尝试使用 SignInManager,但当它调用 PasswordSignInAsync 时,它正在寻
我按如下方式设置身份: services.AddIdentity( c => { c.Password.RequireDigit = false; c.
我有一个 WebAPI 应用,我正在使用第 3 方身份验证器(Firebase 身份验证)。 我的身份验证有效,但一旦用户登录到我的服务器,我想将凭据和用户数据保存到我的 ASP.NET Identi
在ASP.NET Core和OAuth中的ASP.NET Identity中,我在登录回调中具有以下代码段: var info = await _signInManager.GetExternalLo
使用 Azure 网站(标准层)并且站点加载正常(设置为始终打开)。网站/代码经过优化和预编译。 第一次调用 SignInManager.PasswordSignInAsync 很慢(大约 2 到 5
我正在实现 asp.net Identity。我用 int 主键而不是默认的 String 覆盖了默认类。我按照以下文章这样做:Article 对于所有代码,我深表歉意,但是我已经被这个愚蠢的错误困住
AccountController.cs 包含 AccountController 类。该类的 Login 方法失败。具体来说, var result = await SignInManager.Pa
我正在探索 SignInManager 类。但是MSDN上给出的信息是非常无用的。它只说明提供的方法和属性是什么。 我正在寻找的是, 什么是登录管理器? 如何使用它? 我有自己的数据库,其中包含与凭据
是否可以使用 SignInManager没有一些 HTTPContext ?我正在制作 Blazor 服务器端应用程序,我需要让最终用户使用 PasswordSignInAsync() 登录SignI
在我的应用程序中,我使用 ASP.NET Identity。一切都工作正常,但通过测试,我发现以下命令会产生许多数据库访问:SignInManager.PasswordSignInAsync: var
在我的应用程序中,我想添加其他条件以便用户登录。例如,出于某种原因,允许管理员“锁定”用户帐户。当帐户被锁定时,用户将无法登录。请注意,这与多次登录尝试失败导致的“锁定”不同。管理员可以删除锁定条件。
我正在尝试了解如何注入(inject) UserManager 和 SignInManager。我已经在我的应用程序中安装了 Ninject,并按以下方式使用它: 请将此视为一个全新的项目。在 Sta
我正在使用Identity 3.0创建Web应用程序,并且SignInManager PasswordSignInAsync()方法有问题。我就像在文档中一样使用它,但是它不返回任何内容(应用程序代码
我正在使用Microsoft.NetCore.App v1.1.0(2016年11月16日),并已构建了一个标准的MVC Web应用程序,并根据Microsoft Docs的建议在其中添加了Micro
将我的应用程序从 .NET Framework 4.6 转换为 .NET Core 2 后,我对数据库进行了请求的更改以支持新的身份模型,即添加到 AspNetUsers 和新表的几个字段。 记录在
我一直在使用此代码登录: // // GET: /Account/Login [AllowAnonymous] public ActionResult Login(string returnUrl)
我在一个由dotnet核心2.1 API后端和Vue.js SPA前端组成的应用程序上的身份验证时遇到一些奇怪的问题。 我已经准备好所有关键元素和层,可以使用Auth API Controller 在
有关新的 Microsoft 身份框架的文档似乎有点稀疏。我目前正在修改标准项目模板,在尝试使用两因素身份验证登录用户时遇到了一些奇怪的行为。 我们只允许通过短信进行 2FA,因此我绕过了用户选择他们
我是一名优秀的程序员,十分优秀!