【发布时间】:2009-09-13 19:39:34
【问题描述】:
我遇到了一个我似乎无法弄清楚的问题。希望有人能指出我正确的方向,或者给我其他的想法来研究。我现在不会提供太多代码,因为老实说,我认为这不是编码问题。
首先,我有一个 ASP.NET 3.5 Web 应用程序。我正在使用 ASP.NET 成员库进行身份验证。数据位于 SQL Server 2005 数据库中。
我的应用程序使用户能够填写保存在数据库中的请求。填写请求的页面位于包含以下 web.config 文件的子文件夹中(我希望用户在填写请求之前进行身份验证):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
用户需要登录或创建新帐户才能填写请求。当他们提交请求时,他们会收到一封电子邮件确认它已提交。此电子邮件验证的收件人地址是通过以下方式收集的:
Membership.GetUser().Email
到目前为止,这一切似乎都相当初级,并且运行顺利。但是,我刚接到我们的用户的几个电话,他们填写了请求并收到了电子邮件,但在系统中找不到该请求。我让他们将确认电子邮件转发给我,以便我可以查看收件人地址并在 ASP.NET 成员资格表中找到用户。但是,我无法根据电子邮件找到用户,并且当我获得有关他们输入内容的详细信息时,我无法在数据库中找到请求的踪迹。
我没有为用户提供删除帐户或删除请求的方法。无法更改电子邮件地址或编辑相关数据。数据库已完全锁定,所有查询都通过存储过程运行。
现在,我的问题是,这到底是怎么回事?用户需要通过身份验证才能填写请求,并且我有确认电子邮件,其中包含我在系统中找不到的电子邮件地址。邮箱地址是使用上面提到的方法收集的,这对我来说证明了这个用户必须存在于数据库中,指定的邮箱地址。
我真的不知道从哪里开始。有人对检查什么有想法吗?如果我很困惑,我将不胜感激任何建议,如果需要,我可以提供任何其他信息。
提前致谢!
【问题讨论】:
-
我们能看到保存记录然后发送电子邮件的函数的代码吗?
-
这是一个简单、直接的存储过程调用,但流经多层系统。我不太确定这是否相关,因为即使电子邮件是使用 Membership.GetUser().Email 调用发送的,我现在也无法追踪 ASP.NET Membership 数据。我知道这封电子邮件已发送,尽管该表单已按照上文详细说明进行了保护。
-
我假设您还检查了数据库是否设置了电子邮件发送时的 LastActivity?我同意这很奇怪,因为 GetUser 不仅连接回数据库以读取用户信息,而且还会根据调用时间对其进行更新...
-
问题是用户的记录不再存在于 ASP.NET 成员表中。
标签: asp.net sql-server asp.net-membership