我一直在尋找幾個小時,並嘗試不同的事情,讓這個工作。我在stackoverflow上試過這麼多文章,或者我太愚蠢以至於無法正常工作,或者我有一些獨特而奇怪的配置阻止了我體驗快樂。使一個WCF服務接受來自jQuery.AJAX的JSON數據()
創建本教程介紹的WCF服務:
http://www.codeproject.com/Articles/97204/Implementing-a-Basic-Hello-World-WCF-Service
這是超級基本的和有一個方法,所有我希望它做的是讓我與jQuery.AJAX消耗它()使用json。
我有它託管在IIS中,它的工作原理。我可以沒有問題地訪問WSDL。
我嘗試用下面的代碼來使用它:
$.ajax({
dataType: 'json',
type: 'POST',
contentType: "application/json",
url: "//localhost:546/HelloWorldService.svc/GetMessage",
data: {
name: "Joe"
}
}).done(function(msg){
console.log(msg);
$("#result").append(msg);
});
我總是錯誤。根據我所嘗試的,我得到500個錯誤,402個錯誤,關於錯誤內容的錯誤...所有的錯誤。
我嘗試過從以下文章實施解決方案。它們的範圍從有我改變的web.config端點(我知道我必須要改變他們,但沒有什麼我已經試過到目前爲止工作在加入JSON端點的方面)增加之類的東西
[WebInvoke(Method = "POST", UriTemplate = "json/PostSalesOrderData", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
的接口。
下面是我看過的一些文章,並試圖粉碎成我的解決方案,使其工作沒有太多成功。
Javascript JSON and WCF webservice on Phonegap Android
WCF Services with JSON, JSONP and SOAP End Points
Two endpoint (soap ,json) and one service method
WCF REST Service not accepting JSON in .Net 4
我也通過本教程中去,並試圖用他說的話讓我的解決辦法工作。依然沒有!
http://www.primordialcode.com/blog/post/passing-json-serialized-objects-wcf-service-jquery
這是我的界面的外觀
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
[WebInvoke(UriTemplate = "GetMessage", Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
String GetMessage(String name);
}
誰能幫我體會快樂?
提前致謝,甚至在看我的問題。如果您需要更多信息,或者我沒有提供足夠的信息,請告訴我,以便我可以幫助您!
我一定錯過了一些愚蠢的事......我知道這不是很難。
編輯:
工作網絡。配置
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="WebHTTPEndpointBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="MyWebServiceBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
</webHttpBinding>
</bindings>
<services>
<service name="MyWCFServices.HelloWorldService"
behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="MyWebServiceBinding" behaviorConfiguration="WebHTTPEndpointBehavior"
contract="MyWCFServices.IHelloWorldService"/>
<endpoint contract="IMetadataExchange"
binding="mexHttpBinding" address="mex"/>
</service>
</services>
</system.serviceModel>
</configuration>
感謝您的答覆。我仍然收到500錯誤,雖然...我認爲問題是與服務/ web.config不一定是.ajax調用。 – Steve 2013-03-20 17:38:07
什麼是錯誤描述?和你的網址狀態 「url:」//localhost:546/HelloWorldService.svc/HelloWorldService「但你打的電話是GetMessage?這裏有什麼問題嗎? – 2013-03-20 17:40:58
好的,我根據你的評論取得了進展。將URL改爲Localhost:546/HelloWorldService.svc/GetMessage現在我有這樣的錯誤:POST http:// localhost:546/HelloWorldService.svc/GetMessage 415(無法處理消息,因爲內容類型爲'application/json '不是預期的類型'application/soap + xml; charset = utf-8') – Steve 2013-03-20 17:54:21