2012-03-13 96 views
2

我在網上看到一堆示例,但我很困惑這個服務應該是獨立的還是與消費應用程序在同一個解決方案中。有人可以幫幫我嗎?如何使用jQuery將AJAX調用添加到ASP.NET網頁的WCF Web服務?

  1. 我需要支持AJAX型WCF服務的文件添加到我的ASP.NET Web應用程序或我需要一個Web服務引用到我的WCF服務?

  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. 有點。這是一個相對路徑,基於網頁與服務在您的託管環境中的位置
  3. 如果您計劃POST到服務方法,那麼是。
  4. 是,在服務

在您的服務端點的行爲包括

<serviceMetadata httpGetEnabled="true"/> 

+0

我不明白#2。如果我的asp.net Web應用程序在解決方案中沒有Web服務,但Web服務託管在開發服務器上,那麼我的網址應該是什麼?我是否需要對開發服務器的http使用絕對地址? – hyprsleepy 2012-03-14 20:36:26

+0

絕對路徑總是有效的,WCF不關心你使用哪一個,只要他們解決。就你而言,這聽起來像你需要一個絕對的服務網址。 – PTiddy 2012-03-14 20:56:34

+0

如果我使用JSON,我的WCF服務需要比basicHttpBinding多嗎?我需要webHttp嗎? – hyprsleepy 2012-03-16 14:24:18

相關問題