2012-03-13 20 views
2

私はオンラインでたくさんの例を見ていますが、サービスを単独で使うべきか、それとも消費するアプリケーションと同じソリューションにするのか混乱しています。誰か助けてくれますか?jQueryを使用してASP.NET WebページにWCF WebサービスへのAJAX呼び出しを追加するにはどうすればよいですか?

  1. は、私は私のASP.NET WebアプリケーションにタイプAJAX対応WCFサービスのファイルを追加する必要があるか、私は私のWCFサービスへのWebサービスの参照が必要なのですか?

  2. jQuery Ajax関数を使用すると、URLパラメータがあります。私が見るすべての例は "Services/MyService.svc/MyMethodName"です。これは、サービスがWebアプリケーションのソリューションの内部にあるためですか?

  3. は私のWCFサービスを持っている必要がない:

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

  4. 私のWebサービスの呼び出しは、以下の属性を持っている必要がありますか?

    [WebInvoke(方法= "POST"、 bodyStyle属性= WebMessageBodyStyle.Wrapped、 ResponseFormat = WebMessageFormat.Json)]

  5. は私のWebアプリケーションや私のWebサービスがenableWebScriptに設定動作を必要としていますか?

必要な属性や設定がありませんでしたか?ここで

は、私のWebアプリケーションでの私のjqueryのAJAX要求である:ここで

$.ajax({ 
type: "POST", 
url: "http://myserver/myservice.svc/mymethod", 
contentType: "application/json; charset=utf-8", 
data: "{" + args + "}", 
dataType: 'json', 
}); 

は自分のWebサービスのweb.configファイルである:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="Basic" /> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="ServiceBehavior" name="MyServiceName"> 
     <endpoint address="basic" 
        binding="basicHttpBinding" 
        bindingConfiguration="Basic" 
        name="Basic" 
        contract="IService" /> 
     <endpoint address="web" 
        behaviorConfiguration="webHttpBehavior" 
        binding="webHttpBinding" 
        name="Web" 
        contract="IService" /> 
     <endpoint address="mex" 
        binding="mexHttpBinding" 
        name="Metadata" 
        contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="webHttpBehavior"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

答えて

3
  1. いいえ、あなたは直接
  2. それを呼び出すことができます並べ替えこれは、Webページとサービスがホスティング環境にある場合の相対パスです。
  3. yes
  4. サービスメソッドにPOSTする場合はyesです。
  5. はい、サービスの

サービス・エンドポイントの振る舞いで

<serviceMetadata httpGetEnabled="true"/> 

を含めます。

+0

私は#2を理解していません。私のasp.net Webアプリケーションがソリューション内にWebサービスを持っていないが、Webサービスがdevサーバー上でホストされている場合、私のURLは何であるはずですか?私はdevサーバーのhttpに絶対アドレスを使用する必要がありますか? – hyprsleepy

+0

絶対パスは常に有効ですが、WCFは解決する限り使用するものを気にしません。あなたの場合、絶対的なサービスURLが必要なように聞こえます。 – PTiddy

+0

JSONを使用している場合、WCFサービスはbasicHttpBinding以上のものが必要ですか? webHttpが必要ですか? – hyprsleepy

関連する問題