私は奇妙な問題があります:私はclientSide App(jquery)を同じドメインのWebAPIに対して実行しています。自分のローカルコンピュータのIIS上で、ルートWebサイト(Sites-> MyApp)としてホストすると、OKとPostの両方で正常に動作します。典型的なAPI呼び出しは次のようになります。Web APIへのAjaxのポストは成功しますが、既定のWebサイト(IIS)でホストされているとクライアント側で失敗します
$.get("api/GetList", null, function (data) {
var list = data;
})
しかし、私はIISの「既定のWebサイト」の下でそれをホストする場合、サブアプリケーションとして、一般的なAPI呼び出しは次のようになります。
$.get("MyApp/api/GetList", null, function (data) {
var list = data;
})
すべてのGET呼び出しは正常に動作しますが、POST呼び出しは異常な動作をします。
$.ajax({
url: "MyApp/api/Fields",
type: 'POST',
dataType: 'json',
contentType: false,
cache: false,
processData: false,
data: data,
success: function (res) {
var x = res;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
//
}
});
ウェブAPIメソッドは次のようになります:私はこのようなPOST呼び出しが作る
[HttpPost]
[Route("api/Fields")]
public async Task<IHttpActionResult> Post() {...
私はPOST呼び出しを実行すると、それがサーバーに到達すると、サーバーメソッドが正常に動作しますが、それが返ってくると私はエラーになります。 http://localhost/MyApp/index.html私は送信ボタンをクリックして、(アクションがサーバー側で成功していても!!)これを取得:ここから HTTPエラー404.0 - あなたが見ることができるように 要求されたURL http://localhost:80/api/Fields?input_1=sometext
が見つかりません、MyAppのへのルート消えてしまい、私はPOSTをしましたが、IISはGETのようにリクエストを処理します!
同じ構成のIIS上のテストサーバーで実行している場合、同じコード1:1はこのエラーなしで正常に動作します。 アイデア
http:// localhost/MyApp/api/fieldsへのAJAX投稿(VS2015のF5を使用して、正しい方法に到達していることがわかります)しかし、私は応答として取得します.HTTPエラー404.0 - 見つかりませんリクエストされたURL http:// localhost:80/api/Fields?input_1 = 123と:リクエストされたリソースはhttpメソッド 'get'をサポートしていません! 1. POSTでした。 2. http:// localhost/MyApp/api/fieldsと呼ばれ、http:// localhost:80/api/Fieldsではありません。 – amira