次のようにサーバー側コントローラーアクションへのPOSTへのjQuery.ajax呼び出しを使用するASP.NetMVC3アプリケーションがあります
クライアント側のjQuery呼び出し:
//Page the server
$.ajax({
url: '/Home/Call_Abort',
type: 'POST',
data: "{ 'op_id': '" + ajaxOPID + "', 'statMsg': '" + ajaxStatMsg + "'}",
contentType: 'application/json; charset=utf-8',
success: function (data) {
window.location.href = data.redirectUrl;
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Error while paging the server to abort. Reported error: '" + xhr.responseText + "'.");
}
});
サーバー-コントローラーのアクション:
[HttpPost]
public JsonResult Call_Abort(string op_id, string statMsg)
{
return Json(new
{
redirectUrl = Url.Action("Operator_Home", "Home", new { op_id = op_id, status = statMsg }),
isRedirect = true
});
}
戻りURLは、ユーザーを別のビュー(つまり、Operator_Homeビュー)にリダイレクトすることになっています。これはローカル開発PCで機能し、期待どおりにOperator_Homeビューにルーティングされますが、開発Webサーバー(IIS7を搭載したServer2008)で実行すると、xhr.responseTextの結果として次の404エラーページがスローされます。上記の.ajax呼び出しで。
何が起こっているのかは、 redirectURLで指定したビュー(つまりOperator_Home)にリダイレクトする代わりに、Call_AbortコントローラーアクションがCall_Abortビューを返すことになっているようです。そのようなビューが存在しないため、以下のエラーが発生します。しかし、なぜこれがVisual Studio開発サーバーを実行しているローカルPCではなく、Webサーバーで発生するのでしょうか。開発マシンでの動作と同じように動作させるために、IISでアプリケーションを調整する必要がある設定はありますか。MVCルーティングについての私の理解は、これが発生している理由を知るのに十分なほど明確ではありません。どんな助けや洞察も大歓迎です。
アップデート
申し訳ありませんが、職場で使用しているサーバーがいくつかあります。間違ったWebサーバーを参照していました。これを実行しているサーバーは、IIS7を搭載したServer2008です。