2013-02-22 140 views
5

我正在使用MVC 3與Visual Studio 2010和C#4.0。我的應用程序可以在Visual Studion的IIS Express下正確工作,並且可以部署到遠程生產IIS 7.5服務器上。使用IIS 7路由錯誤與IIS Express生成HTTP 404錯誤

當我切換到在開發系統上使用完整的IIS 7.5服務器時,我突然開始爲我的兩個控制器中的操作獲取HTTP 404錯誤。其他控制器功能正常。這是從Visual Studio運行應用程序或直接從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 Express和一個部署到IIS。當IIS連接到項目進行調試時,它會引發404錯誤。

任何人都可以請解釋爲什麼404錯誤正在生成?

+0

你是否已經設置管理流水線模式以集成到應用程序池中? – levelnis 2013-02-25 12:37:22

+0

謝謝,是的,我們這樣做,以及檢查「允許32位應用程序」 – 2013-02-26 17:08:10

+0

你可以顯示這些控制器的路線?行動是否有任何屬性?任何自定義處理程序運行? – levelnis 2013-02-26 18:33:00

回答

0

我在想的第一件事是關於IIS configuration。 在集成模式下配置的站點是否有Application Pool

,你也可以嘗試在global.asaxApplication_OnError添加,並在那裏檢查server.GetLastError

另一種選擇應該是使用窺看你能有什麼路由問題(如果是路由的問題)

之後如果你沒有找到問題發佈一些IIS配置的更多細節