Устранение неполадок веб-службы asp.net - PullRequest
0 голосов
/ 22 июля 2010

У меня проблемы с выяснением, почему мой веб-сервис не работает правильно, когда вызывается из моего приложения asp.net только в рабочей среде.

Я могу запустить свое приложение asp.net локально, вызывая веб-службу (в работе), и она завершается правильно.

Я могу изменить файл web.config, чтобы я могиспользуйте тестовую форму на производственном веб-сервисе, и он правильно звонит.

Я звоню веб-сервису в совместно используемой dll и уже проверяю, действительно ли я получаю обновленную dll.

Это очень простой веб-сервис для регистрации любых исключений на наших сайтах, которые не обрабатываются в других местах.Я добавляю к нему дополнительные параметры, а также перемещаю его в другой проект, чтобы он был сгруппирован с другими нашими веб-службами.Он находится в своем собственном asmx-файле с именем ExceptionServices

Мой общий dll имеет класс ErrorHandler, который вызывает (на данный момент, тестовый метод) TestEmail(string to), и все, что он делает, отправляет мне электронное письмо.

Как я уже говорил, при локальном запуске моего приложения оно вызывает производственный веб-сервис, и все хорошо.

Я работаю в размещенной среде и не могу установить средства удаленной отладки, чтобыЯ не могу пошагово пройти производственный код (если никто не знает никаких хитростей).

Просто кажется, что это должно работать ( стучит головой по клавиатуре ) ...

Вот мой основной веб-метод:

    [WebMethod]
    public void TestEmail(string to)
    {
        MailMessage mm = new MailMessage("no-reply@mydomain.com", to, "test", "body here");
        SmtpClient client = new SmtpClient("localhost"); // already tried tweaking smtp server, and all my options work when I use the test form
        client.Send(mm);
    }

Класс ErrorHandler в общей dll

public class ErrorHandler
{
    public static void ThrowError(Exception ex, string sitename, string ip, string username)
    {
        //if (ip != "127.0.0.1") // exclude local errors when developing
        {
            EILib.ExceptionServices.EIExceptionHandler eh = new EILib.ExceptionServices.EIExceptionHandler();
            eh.TestEmail("senloe@....com");
        }
    }
}

и, наконец, мой global.asax, где все это начинается:

    protected void Application_Error(object sender, EventArgs e)
    {
        //Get the Error.        
        System.Exception anError = Server.GetLastError();
        EILib.ErrorHandler.ThrowError(anError, "mydomain.com", EILib.Utilities.GetUserHostAddress(Request), User.Identity.Name);
        ....
    }

1 Ответ

1 голос
/ 22 июля 2010

Убедитесь, что служба SMTP работает на вашем производственном сервере. Убедитесь, что он настроен на разрешение учетных данных по умолчанию (хостинговой компании вполне может потребоваться учетные данные для электронной почты). Убедитесь, что служба настроена на получение почты с локального компьютера (в отличие от использования одного из методов доставки каталога раскладки).

...