私はまだ ASP.Net Web API の操作にかなり慣れていないので、ご容赦ください。
現在、私が開発した API があり、正常に動作しているようです。メインページから AJAX を使用して呼び出すことができ、すべてが期待どおりに機能します。たとえば、次のような呼び出しを行うことができます。
$.ajax({
url: "api/comment/AddComment",
type: "POST",
contentType: "application/json; charset=utf-8",
//and so on...
});
これは、URL が localhost:44966/ のように見える場合、インデックス ページから呼び出すと問題なく動作します。
私は今、他のいくつかのビュー、特にユーザーがサイトにフィードバックを追加するためのビューにいくつかの機能を追加し始める必要があるところまで来ました。新しいフィードバック ビューと新しい ApiController (フィードバック コントローラーと呼ばれる) を表示する新しいビューを HomeController に追加しました。そのページで、次のような呼び出しを試みます。
$.ajax({
url: "api/Feedback/SubmitFeedback",
type: "POST",
contentType: "application/json; charset=utf-8",
cache: false,
data: JSON.stringify(parameter),
success: function (data) {
alert("success!");
}
});
これにより 404 が発生し、呼び出しの URL を見ると、次のように表示されているため、失敗しているのも不思議ではありません。
/Home/api/Feedback/SubmitFeedback
また、ホームに戻ると (今度は localhost:44966/Home/Index に移動すると)、同じ問題のために他のサービス呼び出しも同様の 404 応答で失敗することに気付きました。「/Home/ " API へのアクセスに使用しようとしているすべての URL の前に。
誰かがここで何が起こっているのかを明らかにすることができますか? API 呼び出しの名前の前に「/Home/」が挿入されているのはなぜですか?
誰かが尋ねる前に、私の WebApiConfig ルーティングは次のようになります。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);