0

我会(如问题所述)想进行异步调用,最好使用 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。服务参考已经到位,所以至少我没有搞砸。

谢谢您的帮助...

4

3 回答 3

3

这不是对您问题的回答,而是警告。我正在查看这个方法并想,“嗯,我想知道 ASP.NET 是否关心对这个 Web 方法的调用是来自您的站点还是来自其他地方?” 一个快速的谷歌搜索让我相信没有任何检查来确保某些冲洗者没有使用你的网络方法来实现他自己的恶意欲望(这里有一篇关于这个的博客文章)。

因此,在开始这项工作之前,您可能需要考虑如何防止有人劫持您的网络方法向我发送伟哥电子邮件。因为如果我从您的网站收到伟哥电子邮件,我不会对您很满意。

于 2008-12-03T20:09:48.050 回答
0

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

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

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

<% } %>

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

于 2008-12-03T20:25:12.077 回答
-3

根据 MSDN 库

为了从脚本访问 Web 服务,它必须是一个 .asmx Web 服务,其 Web 服务类由 ScriptServiceAttribute 属性限定。要从脚本调用的各个方法必须使用 WebMethodAttribute 属性进行限定。

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

于 2008-12-03T20:26:11.247 回答