2012-11-24 75 views
0

我有如下界面簡單的WCF服務:通過jquery調用兩個方法的WCF JSON服務。 GET方法作品,POST方法將返回404錯誤

[ServiceContract] 
public interface IPageService { 

    [OperationContract] 
    [WebGet(UriTemplate = "/GetPage/{pageNumber}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    Page GetPage(string pageNumber); 

    [OperationContract] 
    [WebInvoke(UriTemplate = "/SetPages", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 
    string SetPages(Page[] pages); 
} 

配置文件的system.serviceModel部分如下:

<system.serviceModel> 
    <protocolMapping> 
    <add scheme="http" binding="webHttpBinding"/> 
    </protocolMapping> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
     <behavior> 
     <webHttp/> 
     </behavior> 
    </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

使用以下稱爲GetPage方法的JavaScript的工作原理如下:

$.ajax({ 
    cache: false, 
    url: 'http://localhost/Test/PageService.svc/GetPage/1', 
    type: 'GET', 
    success: function(result) { 
     // do success stuff 
    }, 
    error: function(req, status, error) { 
     // do error stuff 
    } 
}); 

使用以下JavaScript調用SetPages方法返回404錯誤:

$.ajax({ 
    cache: false, 
    url: 'http://localhost/Test/PageService.svc/SavePages', 
    type: 'POST', 
    data: '[{...}]', 
    dateType: 'json', 
    contentType: 'application/json', 
    processData: false, 
    success: function(result) { 
     // do success stuff 
    }, 
    error: function(req, status, error) { 
     // do error stuff 
    } 
}); 

我試圖在Ajax調用已經並沒有什麼幾乎每一個參數的組合有差別。我玩過配置文件並嘗試了各種博客中提出的各種配置,但所有這些都會使兩種方法返回AddressFilter或ContractFilter不匹配。我錯過了什麼?使這兩種方法起作用的最快/最簡單的方法是什麼?

回答

2

根據您發佈的代碼,jscript調用SavePages方法,但在服務器端post方法的名稱爲SetPages。

+0

Urgh!只是浪費了一整天的時間,我確信我已經多次檢查過。謝謝。 – rcarrington