1

ローカル アドレスを使用して、他のプロジェクトから WCF サービスを呼び出そうとしています。同じソリューション エクスプローラーに 2 つのプロジェクトがあります。1 つのプロジェクトにはサービスがあり、もう 1 つのプロジェクトは、javascript で Ajax を使用して WCF サービスを呼び出す Web アプリケーションです。以下は私のjavascriptコードです、

function sclick() {
    alert("m here");
    $.ajax({
        type: "POST",
        url: "http://localhost:4780/Service1.svc/myfunction",
        contentType: "application/json; charset=utf-8 ",
        dataType: "json",
        success: success,
        error: fail
    })

}

function success(result) {
    alert(result);
   //alert("Success" + result.myfunctionResult);
}

function fail(result) {
    alert("Fail..... " + result.statusText + ": " + result.status);
}

フローは成功関数に進みますが、結果オブジェクトで null を取得します。ajax 部分の URL は、service1.svc ファイルをブラウザで表示して取得した URL です。どこが間違っているのか誰か教えてください!同じプロジェクトで正常に動作します。しかし、クロスドメインは機能していません。他のプロジェクトからサービスを呼び出すと、null が返されます。サービスにブレークポイントを与えました。ブレークポイントには適切な値が表示されますが、JavaScript コードには含まれていません。

4

3 に答える 3

0

あなたの問題は、CORSを有効にしない限り、WCFがそのままではクロスドメインをサポートしていないことだと思います。

ここで説明と回避策をよく読んでください:http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcf.aspx

別の簡単な方法は、使用しているプロジェクトに WebAPI をドロップすることです。これは、WebForms または MVC で非常に簡単に行うことができます。

于 2013-06-20T04:40:09.257 に答える