Frage

Ich habe folgend in meinem Global.asax.cs

routes.MapRoute(
    "Arrival",
    "{partnerID}",
    new { controller = "Search", action = "Index", partnerID="1000" }
);

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

Meine SearchController wie folgt aussieht

public class SearchController : Controller
{
    // Display search results
    public ActionResult Index(int partnerID)
    {
        ViewData["partnerID"] = partnerID;
        return View();
    }
}

und Index.aspx einfach zeigt Viewdata [ "PartnerID"] im Moment.

Ich habe ein virtuelles Verzeichnis in IIS unter Windows XP als Test bezeichnet wird eingestellt.

Wenn ich darauf meinen Browser unter http: // localhost / Test / dann bekomme ich 1000 wie erwartet angezeigt. Allerdings, wenn ich versuche, http: // localhost / Test / 1000 ich eine Seite nicht gefunden Fehler. Irgendwelche Ideen?

Gibt es spezielle Überlegungen für MVC in einem virtuellen Verzeichnis ausgeführt wird?

War es hilfreich?

Lösung

IIS 5.1 interpretiert Ihre URL, so dass seine für einen Ordner sucht 1000 unter dem Ordner mit dem Namen als Test bezeichnet. Warum ist das so?

  

Dies geschieht, weil IIS 6 nur   ASP.NET aufruft, wenn es sich um eine sieht   „Dateinamenerweiterung“ in der URL, die ist   abzubildenden aspnet_isapi.dll (worin A   C / C ++ ISAPI Filter für   Aufrufen ASP.NET). Da Routing ist ein   .NET IHttpModule genannt   UrlRoutingModule, wird es nicht   aufgerufen, es sei denn ASP.NET selbst bekommt   aufgerufen, die nur geschieht, wenn   aspnet_isapi.dll wird aufgerufen, die   nur geschieht, wenn ein ASPX gibt es in   die URL. Also, keine aspx, nein   UrlRoutingModule, daher die 404.

Die einfachste Lösung ist:

  

Wenn Sie nichts dagegen nicht mit aspx in Ihrem   URLs, gehen Sie einfach durch Ihren Routing   Config, das Hinzufügen ASPX-, bevor ein   in jedem Muster Schrägstrich. Zum   Beispiel Verwendung   {} ASPX- Controller / {Aktion} / {id} oder   myapp.aspx / {Controller} / {Aktion} / {id}.   Legen Sie ASPX nicht innerhalb der   geschweiften Klammer Parameternamen, oder in   die ‚default‘ Werte, weil es nicht   wirklich Teil des Controller-Namen -   es ist nur in der URL IIS gerecht zu werden.

Quelle: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

Andere Tipps

Wenn Sie diese auf Windows XP tun, dann sind Sie mit IIS 5.1. Sie müssen ASP.Net erhalten Sie Ihre Anfrage zu bearbeiten. Sie müssen entweder eine Erweiterung Ihrer Routen hinzufügen ({Controller} .mvc / {Aktion} / {id}) und dass die Erweiterung auf ASP.Net Karte oder alle Anfragen an ASP.Net kartieren. Die http:. // localhost / Test funktioniert, weil es DEFAULT.ASPX geht, die in MVC-Projekte speziell behandelt wird

Darüber hinaus müssen Sie angeben, http: // localhost / Test / Search / Index / 1000 . Die Controller und die Aktion Stücke sind nicht optional, wenn Sie eine ID angeben möchten.

Es gibt eine Reihe von Überlegungen bei der virtuellen Verzeichnisse in Ihrer Anwendung verwenden.

Eine besondere ist, dass die meisten Browser keine Cookies senden, die von einem virtuellen Verzeichnis in ein anderes kam, auch wenn die Anwendungen auf demselben Server befinden.

Versuchen Sie setzen virtuellen Pfad. Rechtsklick auf mvc Projekt, Eigenschaften, Webregisterkarte gibt geeigneten Ort eingeben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top