我有一个MVC Web应用程序,其中ajax将表单发布到控制器方法,该方法以这样的方式开始:
[HandleError]
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public JsonResult FormSubmitMethod (FormCollection formCol) {
MembershipUser myObject = Membership.GetUser();
Guid currentUserID = (Guid)myObject.ProviderUserKey; // correct guid
string emailAddress = myObject.Email; // incorrect email returned one time
...and so on
我使用Guid ProviderUserKey查找有关用户的数据并执行所有常规更新等。从myObject.Email返回的电子邮件地址用作在所有常规成功结束时发送的确认电子邮件中的收件人地址控制器方法中的事务处理。
我明白也许我应该这样做:
MembershipUser myObject = Membership.GetUser(User.Identity.Name);
也许这就是我的问题。
此代码已在生产中运行了几年,没有报告问题,并且发送了数千封成功的电子邮件确认。最近没有对代码进行任何更改。
本周我有人报告他们收到了这个控制器方法的电子邮件,当它是打算给其他人的时候。我试图弄清楚这是怎么发生的。关于发生的事情我知道的其他事实和事情:
是否合理或预期Membership.GetUser()。电子邮件返回一个看似随机的用户的电子邮件地址而不是当前登录用户的电子邮件地址?如果是这样的话?