0

Entity Framework を使用する .Net Webapi を開発しましたが、URI を使用してすべてが正しく機能しています... //mywebserver/webappfolder/api/mycontroller?val=1&val=2&val=3

EF と API は同じプロジェクトにあります。

この時点ではカスタム クライアント アプリケーションは必要ないため、この URI をローカル PC ブラウザーに入力すると、期待どおりに JSON または XML の結果が得られます。そのため、開発ボックスで WebAPI を使用するクライアントの作成を開始し、「//mydeveloperserver/...」で実行できると想定しました。

$(document).ready(function () {
           $('#button').click(function () {
               alert('Hello. This works');
               $.get('http://mywebserver/webappfolder/api/mycontroller', function (data) {
                   $.each(data, function (n, val) {
                       $('#OutputDiv').add(n + ':Dedication ' + val.DedicationName);
                   });

               }); 
           });
       });

JQuery/AJAX は、Fiddler を使用してリクエストが正常に行われ、返されたことを確認できたにもかかわらず、コールバック関数の結果を埋めることができませんでした。

ドキュメントを掘り下げた後、クライアントを使用するアプリはWebAPI と同じWeb サーバー "//mywebserver/..." で実行する必要があり、JQuery/AJAX クライアント Web アプリが "mywebserver" に移動されると、コールバック関数がJSON の結果は期待どおりです。上記のコードが機能するようになりました

他のサーバーには Web サイト アプリがあり、セキュリティを損なうことなく WebAPI を呼び出してそのデータを使用するために使用したい .Net Windows フォーム アプリがあります。実稼働サーバーで実行されている WebAPI を開発者ボックス Web アプリケーションから呼び出すにはどうすればよいですか。別の場所からそのデータを使用できるようにするには、WebAPI サーバーに別のコード レイヤーが必要ですか?

4

1 に答える 1

0

Ajay のコメントによると、CORS を有効にする必要があります。これを行うには、次のNuget パッケージをダウンロードします(これはプレリリース/ベータ版ですが、Microsoft 製品チームからのものです)。

背景情報とこのパッケージの使用方法の詳細については、マニュアルを参照してください

于 2013-07-17T08:36:29.760 に答える