Visual Studio 2010とC#4.0でMVC 3を使用しています。私のアプリケーションは、Visual StudioのIIS Expressの下で、リモートプロダクションIIS 7.5サーバーに展開されたときに正しく動作します。IIS 7.0とIIS ExpressのルーティングエラーがHTTP 404エラーを生成する
開発システムで完全なIIS 7.5サーバーを使用するように切り替えると、私のコントローラの2つのアクションで突然HTTP 404エラーが発生しました。他のコントローラは正しく機能します。これは、Visual Studioからアプリケーションを実行するか、またはIISから直接実行します。
構成の違いはありません。この動作を展示しているコントローラの
一つである:IIS Expressで予想し、IISにデプロイするよう
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using Mbrrace.ApplicationServices.Validation;
namespace Mbrrace.WebUI.Areas.Validation.Controllers
{
public class ValidationController : Controller
{
//
// GET: /Validation/Validation/
[HttpGet]
public JsonResult PostcodeCheck([Bind(Prefix = "perinatalView")]AddressViewModel model)
{
// postcode has already been checked for correct format
// now look it up to see if it exists
if (PostcodeChecks.CheckPostcodeExists(ConfigurationManager.ConnectionStrings["CommonCodeEntities"].ConnectionString, model.Postcode))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json("This postcode was not found in the database", JsonRequestBehavior.AllowGet);
}
[HttpPost]
public JsonResult PostcodeExtendedCheck(String Postcode)
{
// check if it exists or of it's sector exists (all but last two characters
string message = PostcodeChecks.PostcodeExtendedCheck(ConfigurationManager.ConnectionStrings["MbrraceCommonCodeEntities"].ConnectionString,
Postcode, Postcode.Substring(0, Postcode.Length - 2));
string success = (message.Length == 0) ? "OK" : "NO";
var result = new { Success = success, Message = message };
return Json(result, JsonRequestBehavior.AllowGet);
}
public class AddressViewModel
{
public string Postcode { get; set; }
}
}
}
これは動作します。 IISがデバッグのためにプロジェクトに接続すると、404エラーが発生します。
誰も404エラーが生成されている理由を説明できますか?
管理パイプラインモードをアプリケーションプールに統合しましたか? – levelnis
ありがとうございます、はい、私たちはそれをしただけでなく、 "32ビットアプリケーションを許可する"を確認しました –
これらのコントローラのルートを表示できますか?アクションには何らかの属性がありますか?任意のカスタムハンドラが実行されていますか? – levelnis