2011-02-02 33 views
1

Visual Studio 2010で.NETを使用してWebサービスを作成する方法についての良いガイドを常に探していますので、AJAXを使用してHTMLベースのWebサイトで利用することができます。JSから呼び出すASP.NET Webサービス

私はASMXという方法があると知っていますが、今ServiceHostに更新されていますので、ServiceHostオブジェクトを使用してasp.net Webサービスを作成する方法を私に伝える簡単なガイドです。

申し訳ありませんがあいまいまたは幼稚の音。

+0

[JQueryを使用してWebメソッドを呼び出す](0120-18751)を参照することができますが、私は探していませんが、 –

答えて

2

あなたのページの上に置いてScriptManager制御をし、あなたの.asmxサービスへの参照を追加:あなたのWebサービスのコードビハインドで

<asp:ScriptManager ID="myManager" runat="server"> 
    <Services> 
     <asp:ServiceReference Path="~/MyService.asmx" /> 
    </Services> 
</asp:ScriptManager> 

は(ScriptService属性に注目してください)あなたのWebメソッドを宣言します。

namespace MyServices 
{ 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    [ScriptService] 
    public class MyService : System.Web.Services.WebService 
    { 
     [WebMethod] 
     public string SayHello(name) 
     { 
      return "Hello, " + name; 
     } 
    } 
} 

は今、あなたは次のようにJavaScriptからのWebサービスを利用することができます

function queryWebService() { 
    MyServices.MyService.SayHello('Bobby', 
    function(result, userContext) { 
     alert('Web-service response: ' + result); 
    }, function(result) { 
     alert('Error!'); 
    }); 
} 

UPDATE

あなたは、単にHTTPのGETリクエストを送信することにより、ウェブサービスを利用したい場合は、次の操作を実行できます。

ScriptMethod属性を持つあなたのWeb-方法飾る:

[WebMethod] 
[ScriptMethod(UseHttpGet = true)] 
public string SayHello(name) 
{ 
    return "Hello, " + name; 
} 

に設定されたUseHttpGetプロパティに注目してください。 (例ではjQuery.ajaxを使用しています)、以下に示すように今、あなたのWebサービスへの単純なHTTP GETリクエストを行うことができます

<webServices> 
    <protocols> 
     <add name="HttpGet"/> 
    </protocols> 
</webServices> 

:あなたはおそらくも、この種の相互作用を可能にしweb.configファイルを変更する必要があり

$.ajax({ 
    url: "/MyService.asmx/SayHello?name=Bobby", 
    success: function(transport) { 
     alert('Web-service response: ' + transport.responseText); 
    } 
}); 

希望すると、これが役立ちます。

+0

そのような解決策のために。サービスはクラウド上でホストされ、Javascriptは異なるクライアントから呼び出されるため、HTTP GETメソッドを使用して呼び出す必要があります。それをしてもいいですか? – Neutralizer

+0

あなたのウェブページは、サービスがホストされるのと同じ(正確な)ホストから来るでしょうか?すなわち、 www.se.comはwww.se.com/myservice.asmxに電話しますか?そうでない場合は、XSSの問題(クロスサイトスクリプティング)があり、その回避策をいくつか使用する必要があります。 – Sean

+0

file:/// – Neutralizer

関連する問題