从ASP.Net进行异步WebService调用MVC
问题描述:
我会(如问题状态)喜欢进行异步调用,最好使用ASP.net AJAX。从ASP.Net进行异步WebService调用MVC
用于将WebMethod的代码如下所示:
[WebMethod]
public void SendMail(string name, string email, string subject, string body)
{
MailMessage toSend = new MailMessage(email, [email protected], subject, body);
var smtp = new SmtpClient();
smtp.Send(toSend);
}
视图上的字段,这并不奇怪:姓名,电子邮件,主题,正文。
在我试图做到这一点时,我一直无法进入WebMethod。该服务的参考资料已到位,所以至少我没有搞砸了。
感谢您的帮助...
答
Here你可以找到调用与AJAX异步方法在ASP.NET MVC与元素,如
<% using (Ajax.Form("SendMail", new AjaxOptions { UpdateTargetId = "resultDiv" })) { %>
<!-- Your form elements here... -->
<% } %>
您可以在控制器方法收到PARAMS,并从那里调用Web服务的一个例子。
答
这不是您的问题的答案,而是一个警告。我正在研究这种方法并思考:“嗯,我不知道ASP.NET是否在意这个Web方法的调用是来自您的网站还是其他地方?”一个快速的谷歌搜索引导我相信,没有任何检查,以确保一些冲洗不使用您的网络方法为自己的恶意愿望(here's a blog post talking about this)。
因此,在你做这个工作之前,你可能想要考虑如何防止某人劫持你的webmethod给我发送伟哥电子邮件。因为如果我从你的网站收到伟哥邮件,我不会对你感到高兴。
答
根据MSDN库
为了使Web服务从脚本访问 ,它必须是一个 的.asmx Web服务,其Web服务 类是有资格与 ScriptServiceAttribute属性。 要从 脚本调用的各个方法必须使用 WebMethodAttribute属性进行限定。
嗯,我还没有考虑,感谢您的抬头。你有什么建议吗? – KevDog 2008-12-03 21:54:46
我仔细看了一下你建立的链接。该调用不在页面后面的代码中,而是在单独的Web服务的.asmx文件中。我会做更多的阅读,看看是否适用相同的警告。 – KevDog 2008-12-03 22:25:51