0

このチュートリアルに従って、Web フォーム Web サイトで最初の Asp.net Web API を構築していますが、問題に直面しています。2 つのプロジェクトを作成しました。

  1. Web サービスの定義のための ホスト プロジェクト
  2. Web サービスを使用するクライアント プロジェクト。

今私の問題は、Web ブラウザー ex) を使用して Web API URL に移動すると、http://localhost:39930/api/products/これは完全に機能し、ブラウザーに応じて XML または Json データが返されることです。

ただし、クライアント Web サイトで の Web サービス URL を使用すると、何も返されません。

クライアント Web サイトから Web サービスを呼び出す方法は次のとおりです。

<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Price</th>
        </tr>
    </thead>
    <tbody id="products">
    </tbody>
</table>

 <script type="text/javascript">
     function getProducts() {
         $.getJSON("http://localhost:39930/api/products",
             function (data) {
                 $('#products').empty(); // Clear the table body.

                 // Loop through the list of products.
                 $.each(data, function (key, val) {
                     // Add a table row for the product.
                     var row = '<td>' + val.Name + '</td><td>' + val.Price + '</td>';
                     $('<tr/>', { text: row })  // Append the name.
                         .appendTo($('#products'));
                 });
             });
     }

     $(document).ready(getProducts);
</script>

そして、これはfirebugでのリクエストのスナップショットです:

ここに画像の説明を入力

応答が空であることに注意してください。

それで、私はここで何か間違ったことをしていますか?サービスをリモートで呼び出せるようにするために追加する必要のある構成はありますか?

前もって感謝します。

4

1 に答える 1

1

これは、ホスト プロジェクトとクライアント プロジェクトが異なるポートで実行されており、同じオリジン ポリシーに違反しており、禁止されているためです。詳細はこちらhttp://en.wikipedia.org/wiki/Same_origin_policy

これを機能させたい場合は、json の代わりに jsonp を使用できます。この記事を見てください http://www.jquery4u.com/json/jsonp-examples/#.UISVAo3iYsc

于 2012-10-22T00:36:58.573 に答える