Asp.net ASP密码恢复电子邮件失败,日期时间精度

Asp.net ASP密码恢复电子邮件失败,日期时间精度,asp.net,datetime,smtp,password-recovery,Asp.net,Datetime,Smtp,Password Recovery,我有一个asp.net 4.0网站,我正在使用PasswordRecovery控件创建忘记密码表单。当我在本地运行该站点时,它工作正常,发送电子邮件。但是,当我从vps运行站点时,在尝试发送电子邮件时会收到一条错误消息。服务器的事件日志中没有任何内容 我的密码恢复aspx代码如下: <asp:PasswordRecovery ID="PasswordRecovery1" runat="server" CssClass="mediumText">

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

我的密码恢复aspx代码如下:

 <asp:PasswordRecovery ID="PasswordRecovery1" runat="server"       
            CssClass="mediumText">
            <MailDefinition From="noreply@x.com"   BodyFileName="~/EmailTemplates/PasswordRecovery.txt" />
<system.net>
    <mailSettings>
      <smtp from="noreply@x.com">
        <network host="smtp.123-reg.co.uk" password="x" userName="x" />
      </smtp>
    </mailSettings>
</system.net>

My web.config邮件设置如下所示:

 <asp:PasswordRecovery ID="PasswordRecovery1" runat="server"       
            CssClass="mediumText">
            <MailDefinition From="noreply@x.com"   BodyFileName="~/EmailTemplates/PasswordRecovery.txt" />
<system.net>
    <mailSettings>
      <smtp from="noreply@x.com">
        <network host="smtp.123-reg.co.uk" password="x" userName="x" />
      </smtp>
    </mailSettings>
</system.net>


现在,我已经对SQLServerExpress实例运行了SQLProfiler,结果表明,调用
dbo.aspnet\u Membership\u GetUserByName
时,SQL Server抛出了一个异常。存在类型转换问题,因为PasswordRecovery正在传递一个带有7位小数的
DateTime
参数(秒)。如果我手动执行小数点后3位的存储过程,则它可以工作。有人知道为什么我的服务器上的
DateTime
参数的精度不同于我的笔记本电脑上的参数吗?

从阅读和后续响应中可以看出,您看到的
DateTime
精度问题只是SQL Profiler以错误格式显示日期的结果。这个问题与阻止您发送电子邮件的原因无关


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

我认为VPS与SMTP服务器之间存在连接问题。 您可以通过尝试使用telnet连接到SMTP服务器,在代码之外对此进行测试。 请按照下面链接中提到的步骤进行操作

日期时间转换错误是一个令人费解的问题。只有当您从探查器复制它并在ManagementStudio中执行它时,才会发生这种情况。这是一个众所周知的问题

您可能需要阅读以下内容:

听起来可能只是因为成员资格提供程序的设置与密码不同

我认为有两种可能性

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

  • 您在VPS上的成员资格提供商配置过去被配置为哈希密码,并且在某个地方被更改为加密密码。(反之亦然)。这也会引起一些问题


  • 是的,我在从笔记本电脑和服务器发送SMTP电子邮件时使用的凭据相同。我没有看到任何错误详细信息,因为我正在使用PasswordRecovery控件。我想这就是“简单”控制的权衡:(您是否有权访问该服务器,或者该服务器是否位于托管服务上?如果您有权访问,是否可以尝试远程登录到目标SMTP服务器,以查看是否有什么东西阻止了通信。如果您没有权限访问该服务器,因为它位于托管服务上,您可能应该阅读托管服务的知识库,或者与他们的支持部门联系,以确定需要什么。)他们的要求是通过SMTP发送邮件。是的,我可以完全访问VPS。我可以通过telnet连接到SMTP服务器,并实际从我的VPS发送电子邮件。这使我认为问题不是SMTP问题。此外,为什么SQL profiler在我的la上运行网站时,几秒钟内只显示3个小数点ptop?@RobBowman在问题描述中,您说您在尝试发送电子邮件时收到错误消息。错误消息是什么?在SQL事件探查器问题上,您是否运行与服务器上完全相同版本的SQL和SQL事件探查器?我从PasswordRecovery控件收到的错误消息是“您检索密码的尝试未成功。请重试。“我现在已将我的VPS配置为SMTP服务器,并测试了我是否可以通过以下网址发送命令行电子邮件:我已将我的网站配置为使用本地SMTP服务器,但我仍然收到错误。重新版本的SQL/Profiler,在我的笔记本电脑上我是SQL server Stnd,在VPS上我是SQL Express和(均为64位)我使用telnet通过远程SMTP服务器从我的VPS发送电子邮件,这很有效fine@robbowman我不知道您在生产中使用的是哪个版本的SQL server,在开发和测试中使用的是哪个vervesrion。听起来您在开发过程中使用了datetime2,现在您正在尝试使用datetime。因此,您的3 vs 7十进制精度问题。请检查此问题