提问人:Efe Zaladin 提问时间:6/15/2021 最后编辑:Efe Zaladin 更新时间:1/4/2023 访问量:524
未触及的 asp.net 模板中的 NullReferenceException (Visual Studio)
NullReferenceException in untouched asp.net template (visual studio)
问:
我正在尝试学习 asp.net 并且我已经从 Visual Studio 中的模板创建了一个 asp.net 项目。我使用了带有单个用户身份验证选项的模板 MVC。当我在不更改任何内容的情况下运行项目时,如果我单击“登录”按钮,我会从 Login.cshtml 的第 20 行获得 NullReferenceException。
我曾试图自己弄清楚,但由于缺乏经验,我做不到;我也没有在网上找到关于这个问题的任何信息。
感谢您的帮助。
此外,如果您无法重现错误,只需 ping 我,我将共享源代码。
-编辑
繁殖步骤:
> (VS 16.9.3) Create a new project
> ASP.Net Web Application (.NET Framework)
> .NET Framework = 4.7.2, project template = MVC, Authentication = Individual User Accounts
> Debug IIS Express (https://localhost:44316)
> Firefox: Warning: Potential Security Risk Ahead, The certificate is not trusted because it is self-signed.
> Accept Risk
> Click "Log in"
> NullReferenceException thrown at Login.cshtml, line 20
Login.cshtml,第 20 行:
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
异常详细信息:
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
答:
我已经解决了这个问题。我遇到的现象被称为第一次机会异常,我不知道它是如何工作的,也不知道它的用途,但这些异常不会干扰程序流程,我能够跳过它们。为了不必在每次抛出此类异常时手动跳过,我只是禁用了异常。
老实说,我对这个话题一无所知,所以我可能不是 100% 正确。如果您对此有更多了解,我仍然会感谢您的知识。
延伸阅读:https://github.com/dotnet/aspnetcore/issues/23649#issuecomment-662098484 https://learn.microsoft.com/en-us/visualstudio/debugger/managing-exceptions-with-the-debugger?view=vs-2019
评论
我也遇到过这个问题。我不确定为什么会发生这种情况,但我确实找到了解决方法。从 AccountController 接收 LoginViewModel 对象时,该对象具有 null 值。更改 AccountController Login Get 方法,以在调用视图时包含新的 LoginViewModel。
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View(new LoginViewModel());
}
这也适用于 Register 方法,只不过它需要 RegisterViewModel。
评论