ASP PasswordRecovery Ошибка электронной почты, точность DateTime - PullRequest
3 голосов
/ 12 февраля 2012

У меня есть веб-сайт asp.net 4.0, и я использую элемент управления PasswordRecovery для формы забытого пароля.Когда я запускаю сайт локально, он работает нормально, письма отправляются.Однако, когда я запускаю сайт с моего vps, я получаю сообщение об ошибке при попытке отправить электронное письмо.В журнале событий сервера ничего нет.

Мой aspx-код PasswordRecovery выглядит следующим образом:

 <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 Profiler для экземпляра SQL Server Express, и получается, что исключение выдается из SQL Server при вызове dbo.aspnet_Membership_GetUserByName.Существует проблема преобразования типов, поскольку PasswordRecovery передает параметр DateTime с 7 десятичными разрядами в течение нескольких секунд.Если я вручную выполню хранимую процедуру с 3 десятичными разрядами, то сработает.Кто-нибудь знает, почему точность параметра DateTime на моем сервере отличается от точности на моем ноутбуке?

Ответы [ 3 ]

0 голосов
/ 18 февраля 2012

Я думаю, что это проблема с подключением вашего VPS к SMTP-серверу. Вы можете проверить это за пределами вашего кода, попытавшись подключиться к SMTP-серверу с помощью telnet. Выполните шаги, указанные в ссылке ниже, чтобы http://support.microsoft.com/kb/323350

0 голосов
/ 23 февраля 2012

Ошибка преобразования даты и времени - красная сельдь.Это происходит только тогда, когда вы копируете его из профилировщика и запускаете его в Management Studio.Это известная проблема.

Возможно, вы захотите прочитать это: http://forums.asp.net/t/1398826.aspx/1

Может показаться, что настройки провайдера членства отличаются от настроек паролей.

Есть две возможности, которые я вижу.

  1. В вашем файле web.config не определен machineKey И ваш локальный экземпляр и VPS указывают на одну и ту же базу данных.Если это так, вставьте machineKey в свою конфигурацию и восстановите ваши пароли.

  2. Конфигурация поставщика членства на VPS раньше была настроена для хешированных паролей и где-то по пути была изменена назашифрованные пароли.(или наоборот).Это также может вызвать проблемы.

0 голосов
/ 17 февраля 2012

Как вы увидите из чтения этой проблемы и последующих ответов, проблема точности DateTime, которую вы видите, является просто результатом того, что SQL Profiler отображает дату в неправильном формате. Эта проблема не связана с тем, что мешает отправке вашего письма.

Какое сообщение об ошибке вы получаете, когда пытаетесь отправить электронное письмо? Скорее всего, проблема связана с тем, что ваша электронная почта не попадает на SMTP-сервер. Отправляете ли вы на тот же SMTP, используя те же учетные данные с вашего компьютера?

...