2010-03-09 7 views
8

Ich habe einige Probleme bei der Bereitstellung einer ASP.net MVC 2 RC 2-Anwendung in meiner Produktionskiste. Ich habe es gut in beiden Entwicklung und Test. Der Hauptunterschied scheint zu sein, dass die Produktionsbox noch nicht auf IIS 7.5 aktualisiert wurde. Wenn ich auf die Seite gehe, bekomme ich nur eine leere Seite, wie in I am getting a blank page while deploying MVC application on IIS beschrieben.ASP.NET MVC auf IIS 7, leere Seite zurück

Ich habe die meisten Dinge dort ohne Erfolg ausprobiert. Ich habe versucht, sowohl die integrierte als auch die klassische Konfiguration für .net 4 zu verwenden und habe versucht, zu einem bestimmten Controller und einer bestimmten Aktion zu gehen, nur für den Fall, dass es etwas mit der Standarddatei zu tun hat. Was ich versucht habe, war seltsamerweise, dass ich das Routing so änderte, dass es .mvc-Erweiterungen verwendete, wie man es für IIS6 tun könnte. Ich möchte das vermeiden. Ich habe das Anmelden von application_error hinzugefügt, aber nichts wird jemals dort hineingeworfen. Ich habe tatsächlich eine ASP.net MVC 1-Anwendung auf dem gleichen Computer, die gut funktioniert. Ich habe auch versucht, wie MVC in meinem asp.net in einem Standarddokument setzen 1 App

 string originalPath = Request.Path; 
     HttpContext.Current.RewritePath(Request.ApplicationPath, false); 
     IHttpHandler httpHandler = new MvcHttpHandler(); 
     httpHandler.ProcessRequest(HttpContext.Current); 
     HttpContext.Current.RewritePath(originalPath, false); 

Dieser arbeitete für das/das Dokument in Ordnung, aber alle Links aus dem, dass nach wie vor einer leeren Seite.

Hat jemand eine Idee, was ich tun soll?

+0

Ich habe das gleiche Problem. Irgendeine Lösungsmöglichkeit? –

+0

Nein, habe es nie repariert. – stimms

+0

Hinweis für andere mit demselben Fehler: Stellen Sie sicher, dass keine app_offline.htm-Datei vorhanden ist. –

Antwort

26

"HTTP-Fehler" und "HTTP-Umleitung" -Dienste müssen der Rolle "Web Server (IIS)" im Kontrollfeld "Server-Manager" hinzugefügt werden. Wenn Sie auch statischen Inhalt wie CSS und Javascript verwenden möchten, aktivieren Sie auch den Dienst "Statischer Inhalt".

+1

Ein Oldie, aber ein Leckerbissen. Spot auf. – brmore

+0

Wenn das hilft (es tat für mich :)), könnten Sie vielleicht die Antwort akzeptieren? –

+1

Es hat wirklich geholfen! Danke, +1 –

1

Nur gedacht, ich würde einen weiteren Grund hinzufügen, warum IIS/MVC eine leere Seite zurückgibt ... angenommen, Sie haben eine App-Pool-Identität, die gegen die SQL-Datenbank autorisiert ist. Angenommen, Sie haben zwei verschiedene Identitäten, eine für die Produktion und eine für die Vorproduktion. Nehmen Sie nun an, dass einer Ihrer geschätzten Kollegen beschließt, die Datenbank aus der Produktion wiederherzustellen, und zwar gegenüber der aus der Vorproduktion. Jetzt haben Sie eine Kopie der Produktdatenbank in pre-prod, die für den Produktionsbenutzer, aber nicht für den Vorserienbenutzer autorisiert ist. In dieser Situation erhielt ich jetzt leere Seiten in der Vorproduktion, weil die Autorisierung für den Pre-Production-Benutzer (die vorher in der Pre-Production-Datenbank existierte) nun durch die Wiederherstellung der Datenbank ausgelöscht wurde. Da diese Benutzer-ID die App-Pool-Identität ist, hat Ihre MVC-App keine Rechte mehr für die Datenbank. Das verursachte MVC, leere Seiten zu rendern, und verursachte mir zwei Tage, meinen Schwanz zu verfolgen, weil ich dachte, dass jemand einige IIS-Einstellungen auf dem Webserver geändert hatte, aber es war eigentlich ein Problem mit Datenbankberechtigungen. Vielleicht gibt dies einen Hinweis auf jemanden mit einem ähnlichen Problem in der Zukunft.

+0

Ich denke, ich bekomme das gleiche Problem, aber ich weiß nicht, wie ich sicher sein soll. Wie haben Sie festgestellt, dass das Problem an der DB, aber nicht an IIS liegt? –

+1

Es ist schon eine Weile her, dass ich daran gearbeitet habe, aber ich glaube, ich habe versucht, mich mit dieser Benutzerkennung direkt in die Datenbank einzuloggen (via SQL-Login) und festgestellt, dass ich mich nicht anmelden konnte existiert nicht mehr! –

+0

Danke David. Mein Problem ist anders, aber es wird auch viel schwieriger, als es sein sollte, wenn es einen genaueren Fehlerbericht gibt. Die zurückgegebene Fehlermeldung sollte klarer sein. –

0

Ich hatte auch nicht die HTTP-Umleitung Rolle installiert, aber ich hatte ein weiteres Problem, dass ich dachte, ich würde hier dokumentieren, falls jemand anderes das gleiche Problem hat.

Ich hatte den Programmordner mit 7-Zip gezippt und auf den Prod-Server übertragen. Als ich es entpackte, wurde die Datei web.config im Ordner Views als Ordner namens web.config mit der darin enthaltenen Konfigurationsdatei hinzugefügt. Verschieben der Datei und Löschen des Ordners sortiert dies für mich.

Der Hinweis war in der Ereignisanzeige, also überprüfen Sie auch dort, wenn die anderen Antworten nicht vollständig helfen.

Keine leere Seite mehr für mich.