Выполнение асинхронного вызова WebService из ASP.Net MVC - PullRequest
0 голосов
/ 03 декабря 2008

Я бы (как говорится в вопросе) хотел бы сделать асинхронный вызов, предпочтительно с использованием ASP.net AJAX.

Код для WebMethod выглядит следующим образом:

[WebMethod]
public void SendMail(string name, string email, string subject, string body)
{
  MailMessage toSend = new MailMessage(email, address@domain.com, subject, body);
  var smtp = new SmtpClient();
  smtp.Send(toSend);
}

Поля в представлении, что неудивительно: имя, адрес электронной почты, тема, тело.

В моих попытках сделать это я не смог добраться до WebMethod. Сервисная ссылка на месте, так что, по крайней мере, я не облажался.

Спасибо за помощь ...

Ответы [ 3 ]

3 голосов
/ 03 декабря 2008

Это не ответ на ваш вопрос, а предупреждение. Я смотрел на этот метод и думал: «Хм, мне интересно, заботится ли ASP.NET, поступает ли вызов этого веб-метода с вашего сайта или где-то еще?» Быстрый поиск в Google заставляет меня поверить, что нет никаких проверок, чтобы убедиться, что какой-то душ не использует ваши веб-методы для своих собственных злонамеренных желаний ( вот сообщение в блоге, говорящее об этом ).

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

0 голосов
/ 03 декабря 2008

По данным библиотеки MSDN

Чтобы веб-сервис был доступ из скрипта, это должно быть Веб-сервис .asmx, чей веб-сервис класс квалифицирован с Атрибут ScriptServiceAttribute. Отдельные методы, которые будут вызываться из Сценарий должен быть квалифицирован с Атрибут WebMethodAttribute.

см. http://msdn.microsoft.com/en-ca/library/bb398998.aspx

0 голосов
/ 03 декабря 2008

Здесь вы можете найти пример вызова асинхронных методов с AJAX в ASP.NET MVC с такими элементами, как

<% using (Ajax.Form("SendMail", new AjaxOptions { UpdateTargetId = "resultDiv" })) { %>

   <!-- Your form elements here... -->

<% } %>

Вы можете получить параметры в методе контроллера и вызвать веб-сервис оттуда.

...