从ASP.Net MVC进行异步WebService调用

时间:2008-12-03 19:54:25

标签: asp.net-mvc web-services asp.net-ajax webmethod

我会(如问题所述)喜欢进行异步调用,最好使用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 个答案:

答案 0 :(得分:3)

这不是您问题的答案,而是警告。我正在研究这种方法并思考,“嗯,我想知道ASP.NET是否关心这个Web方法的调用是来自您的网站还是其他地方?”一个快速的谷歌搜索让我相信没有任何检查,以确保一些冲洗没有使用您的网络方法来满足他自己的恶意欲望(here's a blog post talking about this)。

所以,在你开始工作之前,你可能想要想办法防止有人劫持你的网络方法向我发送伟哥电子邮件。因为如果我从你的网站收到伟哥电子邮件,我将不会对你感到满意。

答案 1 :(得分:0)

Here您可以在ASP.NET MVC中找到使用AJAX调用异步方法的示例,其中包含

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

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

<% } %>

您可以在控制器方法中接收参数并从那里调用Web服务。

答案 2 :(得分:-3)

根据MSDN Library

  

为了获得Web服务   从脚本访问,它必须是一个   .asmx Web服务的Web服务   上课是合格的   ScriptServiceAttribute属性。   从中调用的个别方法   脚本必须符合   WebMethodAttribute属性。

请参阅http://msdn.microsoft.com/en-ca/library/bb398998.aspx