2013-02-22 16 views
5

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エラーが生成されている理由を説明できますか?

+0

管理パイプラインモードをアプリケーションプールに統合しましたか? – levelnis

+0

ありがとうございます、はい、私たちはそれをしただけでなく、 "32ビットアプリケーションを許可する"を確認しました –

+0

これらのコントローラのルートを表示できますか?アクションには何らかの属性がありますか?任意のカスタムハンドラが実行されていますか? – levelnis

答えて

0

私が最初に考えているのは、IIS configurationです。 統合モードで設定されたサイトにApplication Poolはありますか?

あなたもglobal.asaxApplication_OnErrorに追加して、そこにチェックインしようとすることができますserver.GetLastError

別のオプションは、(それがルーティングの問題がある場合)あなたが持っている可能性がどのようなルーティングの問題を参照し垣間見るを使用するようにする必要があります

問題が見つからない場合はIISコンフィグレーションの詳細をもう一度投稿してください