Выполнение асинхронного вызова WebService из ASP.Net MVC
-
19-08-2019 - |
Вопрос
Я хотел бы (как говорится в вопросе) сделать асинхронный вызов, предпочтительно с использованием 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. Сервисная ссылка на месте, так что, по крайней мере, я не облажался. Р>
Спасибо за помощь ...
Решение
Здесь вы можете найти пример вызова асинхронных методов с AJAX в ASP.NET MVC с такими элементами, как
<% using (Ajax.Form("SendMail", new AjaxOptions { UpdateTargetId = "resultDiv" })) { %>
<!-- Your form elements here... -->
<% } %>
Вы можете получить параметры в методе контроллера и вызвать веб-сервис оттуда.
Другие советы
Это не ответ на ваш вопрос, а предупреждение. Я смотрел на этот метод и думал: & Quot; хм, мне интересно, заботится ли ASP.NET, поступает ли вызов этого веб-метода с вашего сайта или откуда-то еще? & Quot; Быстрый поиск в Google заставляет меня поверить, что нет никаких проверок, чтобы убедиться, что какой-то душ не использует ваши веб-методы для своих собственных злонамеренных желаний ( вот сообщение в блоге, в котором об этом говорится ).
Итак, прежде чем начать работать, вы можете подумать о том, как запретить кому-либо угонять ваш веб-метод и отправлять мне электронные письма от Виагры. Потому что, если я получу электронное письмо от Виагры с вашего сайта, я не буду очень доволен вами.
По данным библиотеки MSDN
Чтобы веб-служба была доступ из скрипта, это должно быть Веб-сервис .asmx, чей веб-сервис класс квалифицирован с Атрибут ScriptServiceAttribute. Отдельные методы, которые будут вызываться из Сценарий должен быть квалифицирован с Атрибут WebMethodAttribute.
см. http://msdn.microsoft.com/en-ca/ библиотека / bb398998.aspx