Visual Studio 2010 および C# 4.0 で MVC 3 を使用しています。私のアプリケーションは、Visual studion の IIS Express で正しく動作し、リモートの運用 IIS 7.5 サーバーにデプロイされた場合にも動作します。
開発システムで完全な IIS 7.5 サーバーを使用するように切り替えたところ、2 つのコントローラーのアクションで突然 HTTP 404 エラーが発生し始めました。他のコントローラは正しく機能します。これは、アプリケーションを Visual Studio から実行するか、IIS から直接実行します。
構成の違いは見られません。
この動作を示すコントローラーの 1 つは次のとおりです。
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 Express で期待どおりに動作し、IIS に展開されます。IIS がデバッグのためにプロジェクトに接続されると、404 エラーがスローされます。
404 エラーが生成される理由を誰か明らかにしてもらえますか?