我有一个奇怪的错误。在用户创建期间,如果系统中已存在用户名,我会对其进行一些检查,并允许用户在尚未激活现有帐户的情况下再次注册。我收到的错误是:
[NullReferenceException: Object reference not set to an instance of an object.]
LAUNCHOnline.en.ca.CreateUser.wCreateUser_Error(Object sender, CreateUserErrorEventArgs e) in C:\Projects\LAUNCH\LAUNCH-Online\LAUNCHOnline\en\ca\CreateUser.aspx.cs:194
我的代码:( var vUser是导致错误的行)
protected void wCreateUser_Error(object sender, CreateUserErrorEventArgs e)
{
// TODO: more verbose error messages.
if (e.CreateUserError == MembershipCreateStatus.DuplicateEmail)
{
// WORK IN PROGRESS
// If the user is not activated yet, update the existing user info with the new info
// as it might be a feedback user. Else, give an error.
// Get the user from the database.
var vUser = (from u in this.dcLAUNCHOnline.aspnet_Users
where u.UserName.Equals(this.wCreateUser.UserName)
select u).Single();
注意:用户的用户名只是他们的电子邮件。我手动检查,并且收到此错误的人确实已在数据库中拥有一个帐户,但仍然会收到此错误。用户名的情况并没有引起问题,因为我尝试了不同的临时帐户案例并且工作正常。
感谢任何帮助 - 谢谢!
答案 0 :(得分:1)
如果从此行抛出NullReferenceException异常:
var vUser = (from u in this.dcLAUNCHOnline.aspnet_Users
where u.UserName.Equals(this.wCreateUser.UserName)
select u).Single();
问题必须是以下情况之一(或缺少它):
dcLAUNCHOnline.aspnet_Users
this.wCreateUser
或者没有结果
from u in this.dcLAUNCHOnline.aspnet_Users where u.UserName.Equals(this.wCreateUser.UserName)
我建议您通过调试来找出哪一个或多个是null
。