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不匹配。我錯過了什麼?使這兩種方法起作用的最快/最簡單的方法是什麼?
Urgh!只是浪費了一整天的時間,我確信我已經多次檢查過。謝謝。 – rcarrington