jquery/JSONを介してWCFサービスを呼び出す際に問題が発生します。
これまでのところ、私は次のことを行いました。
VS 2010では、新しい「WCFサービスアプリケーション」プロジェクトを開始します。次に、Visual Studioは、IService /Serviceと呼ばれるサンプルサービスを自動生成します。このサービスには、次の機能があります。
string GetData(int value);
IService.cs内に、次のようにWebGet属性を追加します。
[OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json)] string GetData(int value);
私のweb.configの中に私は持っています
<?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <services> <service name="WcfService1.Service1" behaviorConfiguration="ServiceBehavior"> <endpoint contract="WcfService1.IService1" binding="webHttpBinding" behaviorConfiguration="AjaxBehavior" /> </service> </services> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> <behavior name="ServiceBehavior"> <serviceDebug includeExceptionDetailInFaults="true"/> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="AjaxBehavior"> <enableWebScript /> </behavior> </endpointBehaviors> </behaviors> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>
私はサービスを構築して実行し、
http://localhost:58403/Service1.svc/GetData?value=1
私のウェブブラウザでは(期待通りに)印刷されます
{"d": "入力しました:1"}
5、新しいasp.netWebアプリケーションプロジェクトを作成します。default.aspx内に、
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
var request = $.ajax({
type: "GET",
url: "http://localhost:58403/Service1.svc/GetData",
data: { value: "1" }
});
request.done(function (msg) {
alert(msg);
});
request.fail(function (jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
});
</script>
6、私はそれを構築して実行しますが、完了したコールバックをヒットする代わりに、エラーコールバックをヒットし、「リクエストに失敗しました:エラー」と警告します
サービスコードにブレークポイントを設定すると、GetData関数がヒットし、正常に戻ったように見えることがわかります。また、Firebug Net Consoleで、Webサービス呼び出しが「200OK」のステータスコードを返していることがわかりますが、成功コールバックではなくエラーハンドラコールバックがヒットしています。誰かが私が間違っていることを知っていますか?