我最近在复习我的 jQuery,在查看帖子时遇到了一个问题,我无法从 wcf 服务获得响应,我经常收到 405 - 方法不允许。我的请求对我来说看起来不错,我想知道我是否错过了一些重要但显而易见的事情,为什么会发生这种情况。
这是正在使用的邮政编码:
$.ajax({
type: "POST",
url: "http://localhost:59929/CustomerService/GetCustomers",
data: null,
ContentType: "application/json",
dataType: "json",
success: function (msg) {
alert("Called and got: " + msg);
},
error: function (result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
}
});
wcf代码如下:
[ServiceContract]
public interface ICustomerService
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
List<Customer> GetCustomers();
[OperationContract]
OperationStatus InsertCustomer(Customer cust);
}
配置如下:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
Fiddler 将原始帖子显示为:
POST http://localhost:59929/CustomerService/GetCustomers HTTP/1.1
Host: localhost:59929
Connection: keep-alive
Content-Length: 0
Origin: http://localhost:59513
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.60 Safari/537.1
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://localhost:59513/LearnJQuery2/ajax/ajax_post.htm
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
并且 fiddler 也确认了 405 响应。