3

私は2つの別々のプロジェクトを持っています

  1. MVC Web アプリ
  2. MVC Web API IIS 7.5 で両方を公開しました

私の Web アプリは 7172 ポートでホストされており、Web API は 7171 ポートでホストされています

奇妙なことに、Web アプリ (7172) から Web API (7171) ポートに jquery.ajax() を呼び出すことができません。405 Method not found エラーコードが表示されます。

しかし、Web API プロジェクト (7171) に同じ jquery.ajax() を記述し、Web API メソッドを呼び出すと、正常に動作し、データが返されます。

Web アプリから Web API を呼び出したい。

任意の提案をいただければ幸いです。

前もって感謝します。

4

2 に答える 2

3

これは、Same Origin Policyと関係があります。デフォルトでは、別のドメインに対して AJAX 呼び出しを実行することはできません (名前、ポート、およびプロトコルの両方で)。

これを有効にしたい場合は、クロスオリジン リソース共有 (CORS)を使用する必要があります。CORS は、(プレリリース) NuGet パッケージをインストールすることにより、Web API で使用できます: Microsoft ASP.NET Web API Cross-Origin Support

このパッケージを使用すると、サービスを呼び出すことができるドメインを構成できます。ASP.NET Web API での Cross-Origin Requests の有効化でウォーク トラフを見つけることができます。本質的には、次のようにコントローラーに属性を追加することになります。

 [EnableCors(origins: "http://myclient.azurewebsites.net", headers: "*", methods: "*")]
于 2013-08-28T14:34:04.777 に答える