2013-02-22 10 views
5

Sto utilizzando MVC 3 con Visual Studio 2010 e C# 4.0. La mia applicazione funziona correttamente in IIS Express da Visual Studion e quando viene distribuita su un server IIS 7.5 di produzione remota.Errore di routing con IIS 7 rispetto a IIS Express che genera errori HTTP 404

Quando passo a utilizzare il server IIS 7.5 completo sul mio sistema di sviluppo, ho improvvisamente iniziato a ricevere errori HTTP 404 per le azioni in due dei miei controller. Gli altri controller funzionano correttamente. Questo è l'esecuzione dell'applicazione da Visual Studio o direttamente da IIS.

Non vedo differenze di configurazione.

Uno dei controller che espone questo comportamento è:

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; } 
     } 

    } 
} 

Questo si comporta come previsto in IIS Express e un schierati a IIS. Genera un errore 404 quando IIS è connesso al progetto per il debug.

Qualcuno può per favore gettare luce sul motivo per cui vengono generati gli errori 404?

+0

Hai impostato la modalità di pipeline gestita per l'integrazione nel pool di applicazioni? – levelnis

+0

Grazie, sì, l'abbiamo fatto e abbiamo controllato "Consenti app a 32-bit" –

+0

Puoi mostrare le rotte per quei controller? Ci sono attributi sulle azioni? Qualche gestore personalizzato in esecuzione? – levelnis

risposta

0

La prima cosa che penso è IIS configuration. C'è un Application Pool per il sito configurato in modalità integrata?

si può anche provare ad aggiungere in global.asax un Application_OnError e il check-in ci la server.GetLastError

un'altra opzione dovrebbe essere quello di usare Glimpse per vedere che cosa problema di routing si potrebbe avere (se si tratta di un problema di routing)

dopo questo se non si trova il problema, inserisci ulteriori dettagli sulla configurazione di IIS