3

私はasp.net 4.0 Webサイトを持っており、パスワードを忘れたフォームに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_GetUserByNameDateTimePasswordRecovery が秒の小数点以下 7 桁のパラメーターを渡しているため、型変換の問題があります。小数点以下 3 桁のストアド プロシージャを手動で実行すると、動作します。サーバーとラップトップでパラメーターの精度DateTimeが異なる理由を知っている人はいますか?

4

3 に答える 3

0

日時変換エラーは赤いニシンです。これは、プロファイラーからコピーしてManagementStudioで実行した場合にのみ発生します。これは既知の問題です。

あなたはこれを読みたいかもしれません:http: //forums.asp.net/t/1398826.aspx/1

単に、メンバーシッププロバイダーの設定がパスワードに関して異なっているように思われます。

私が見る2つの可能性があります。

  1. web.configにmachineKeyが定義されておらず、ローカルインスタンスとVPSインスタンスの両方が同じデータベースを指している。これが当てはまる場合は、構成にmachineKeyを入れて、パスワードを再生成します。

  2. VPSのメンバーシッププロバイダー構成は、以前はハッシュパスワード用に構成されていましたが、途中で暗号化されたパスワードに変更されました。(またはその逆)。これも問題を引き起こします。

于 2012-02-22T22:08:17.250 に答える
0

VPS から SMTP サーバーへの接続の問題だと思います。telnet を使用して SMTP サーバーに接続することで、コードの外部でこれをテストできます。以下のリンクに記載されている手順に従って ください http://support.microsoft.com/kb/323350

于 2012-02-18T00:32:10.787 に答える
0

この問題とその後の回答を読むとわかるように、表示されているDateTime精度の問題は、SQL プロファイラーが間違った形式で日付を表示した結果にすぎません。この問題は、メールの送信を妨げているものとは無関係です。

メールを送信しようとしたときに表示されるエラー メッセージは何ですか? この問題は、電子メールが SMTP サーバーに到達するのを妨げている何かに関連している可能性が高いです。マシンから同じ資格情報を使用して同じ SMTP に送信していますか?

于 2012-02-17T19:16:31.160 に答える