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 メソッドへの呼び出しがあなたのサイトから来ているのか、それとも別の場所から来ているのかを気にかけているのだろうか?」と考えていました。Google で簡単に検索したところ、悪意のある欲望のために 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 サービスにアクセスするには、その Web サービス クラスが ScriptServiceAttribute 属性で修飾されている .asmx Web サービスである必要があります。スクリプトから呼び出される個々のメソッドは、WebMethodAttribute 属性で修飾する必要があります。

http://msdn.microsoft.com/en-ca/library/bb398998.aspxを参照してください。

于 2008-12-03T20:26:11.247 に答える