我最近刷了我的jQuery,當我過去發佈後,我來到一個問題,我無法得到一個wcf服務的響應,我經常得到405 - 方法不允許。我的要求對我來說很好,我想知道我是否錯過了至關重要的事情,但是爲什麼會發生這種情況。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
和提琴手也證實了405響應。
你在哪裏定義了你的配置中的端點元素?此外,請確保使用正確的行爲元素公開webHttpBinding – Rajesh 2012-08-06 15:43:34