2013-02-22 11 views
5

Ich verwende MVC 3 mit Visual Studio 2010 und C# 4.0. Meine Anwendung funktioniert ordnungsgemäß unter IIS Express von Visual Studio und bei Bereitstellung auf einem Remote-Produktions-IIS 7.5-Server.Routingfehler mit IIS 7 im Vergleich zu IIS Express, das HTTP 404-Fehler generiert

Wenn ich den vollen IIS 7.5 Server auf meinem Entwicklungssystem benutze, habe ich plötzlich HTTP 404 Fehler für die Aktionen in zwei meiner Controller bekommen. Die anderen Controller funktionieren ordnungsgemäß. Dies führt entweder die Anwendung von Visual Studio oder direkt von IIS.

Ich kann keine Konfigurationsunterschiede sehen.

Einer der Controller, die dieses Verhalten zeigen, ist:

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

    } 
} 

Dies als in IIS Express und eingesetzt, um IIS erwartet verhält. Es wird ein 404-Fehler ausgegeben, wenn IIS zum Debuggen mit dem Projekt verbunden ist.

Kann jemand bitte irgendein Licht darauf werfen, warum die 404 Fehler erzeugt werden?

+0

Haben Sie den verwalteten Pipeline-Modus in den Anwendungspool integriert? – levelnis

+0

Danke, ja, wir haben das genauso gemacht wie nach "32-Bit-Apps erlauben" –

+0

Können Sie die Routen für diese Controller anzeigen? Gibt es irgendwelche Attribute auf den Aktionen? Alle benutzerdefinierten Handler ausgeführt? – levelnis

Antwort

0

Das erste, was ich denke, ist über IIS configuration. Gibt es eine Application Pool für die Site im integrierten Modus konfiguriert?

Sie können auch versuchen, in den global.asax ein Application_OnError hinzuzufügen und dort überprüfen die server.GetLastError

sollte eine weitere Option sein Glimpse zu verwenden, um zu sehen, welche Routing-Problem, das Sie (wenn es ein Routing-Problem)

haben könnten

danach, wenn Sie das Problem nicht finden post einige weitere Details der IIS-Konfiguration