3

我有一个 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 Profiler,结果发现 SQL Server 在调用dbo.aspnet_Membership_GetUserByName. 存在类型转换问题,因为 PasswordRecovery 传递的DateTime参数包含 7 个小数位的秒数。如果我手动执行小数点后 3 位的存储过程,那么它可以工作。有谁知道为什么DateTime我的服务器上的参数精度与笔记本电脑上的不同?

4

3 回答 3

0

正如您在阅读此问题和后续回复中所看到的那样,DateTime您看到的精度问题只是 SQL Profiler 以错误格式显示日期的结果。该问题与阻止您发送电子邮件的原因无关。

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

于 2012-02-17T19:16:31.160 回答
0

我认为这是从您的 VPS 到 SMTP 服务器的一些连接问题。您可以通过尝试使用 telnet 连接到 SMTP 服务器来在代码之外对此进行测试。按照以下链接中提到的步骤访问 http://support.microsoft.com/kb/323350

于 2012-02-18T00:32:10.787 回答
0

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

您可能想阅读以下内容: http ://forums.asp.net/t/1398826.aspx/1

听起来可能只是会员提供者的设置在密码方面有所不同。

我看到了两种可能性。

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

  2. 您在 VPS 上的会员提供商配置曾经配置为散列密码,并且在此过程中某处已更改为加密密码。(或相反亦然)。这也会引起问题。

于 2012-02-22T22:08:17.250 回答