ASP PasswordRecovery电子邮件失败,DateTime精度

时间:2012-02-12 18:04:06

标签: asp.net datetime smtp password-recovery

我有一个asp.net 4.0网站,我正在使用PasswordRecovery控件忘记密码表单。当我在本地运行该网站时,它工作正常,发送电子邮件。但是,当我从我的vps运行该站点时,我在尝试发送电子邮件时收到错误消息。服务器的事件日志中没有任何内容。

我的PasswordRecovery aspx代码如下:

 <asp:PasswordRecovery ID="PasswordRecovery1" runat="server"       
            CssClass="mediumText">
            <MailDefinition From="noreply@x.com"   BodyFileName="~/EmailTemplates/PasswordRecovery.txt" />

我的web.config邮件设置如下:

<system.net>
    <mailSettings>
      <smtp from="noreply@x.com">
        <network host="smtp.123-reg.co.uk" password="x" userName="x" />
      </smtp>
    </mailSettings>
</system.net>

我现在针对SQL Server Express实例运行SQL事件探查器,结果发现在调用dbo.aspnet_Membership_GetUserByName时SQL Server会抛出异常。存在类型转换问题,因为PasswordRecovery传递的DateTime参数的秒数为7位小数。如果我手动执行3位小数的存储过程,s然后它的工作原理。有谁知道为什么DateTime参数的精度在我的服务器上与在我的笔记本电脑上不同?

3 个答案:

答案 0 :(得分:0)

正如您将从阅读this issue和后续响应中看到的那样,您看到的DateTime精度问题只是SQL Profiler以错误格式显示日期的结果。该问题与阻止发送电子邮件的内容无关。

尝试发送电子邮件时收到的错误消息是什么?该问题很可能与阻止您的电子邮件进入SMTP服务器的内容有关。您是否使用机器上的相同凭据发送到同一SMTP?

答案 1 :(得分:0)

我认为从VPS到SMTP服务器存在一些连接问题。 您可以尝试使用telnet连接到SMTP服务器,在代码之外进行测试。 请按照以下链接中提到的步骤进行操作          http://support.microsoft.com/kb/323350

答案 2 :(得分:0)

日期时间转换错误是红鲱鱼。只有从分析器复制并在管理工作室中执行时才会发生这种情况。这是一个众所周知的问题。

你可能想读这个: http://forums.asp.net/t/1398826.aspx/1

听起来可能只是会员提供商设置与密码有所不同。

我看到有两种可能性。

  1. 您的web.config中没有定义machineKey,并且您的本地和VPS实例都指向同一个数据库。如果是这样,请将machineKey放入配置中并重新生成密码。

  2. 您在VPS上的成员资格提供程序配置曾经配置为使用散列密码,并且在此过程中的某个位置已更改为加密密码。 (或相反亦然)。这也会导致问题。