ASP.NET MVC4 nicht rendering-layouts in IIS
Arbeiten mit ASP.NET und MVC für ein paar Jahre und noch nie gesehen davor...
Nur erhielt eine neue Maschine. Erstellt ein neues MVC4-Projekt (für das Internet, in den Assistenten). Ich bin mit dem Projekt "out of the box" zu testen, dass alles eingerichtet ist und ordnungsgemäß konfiguriert.
Wenn ich es aus Visual Studio (2010) mit dem eingebauten web-server, dann ist alles in Ordnung. Jedoch, ich habe eine Anwendung in IIS, und es ist nicht der Darstellung des Layouts (Standard-generierten code in die Standard-Speicherort unter " ~/Views/Shared/_Layout.cshtml) butI tun, um den Index.cshtml (~/Views/Home/Index.cshtml) Inhalt. Nichts aus dem layout dargestellt wird: keine html-Tags, keine Stile, keine javascript, keine body-Tags, nichts.
Haben die grundlegende Diagnose... Kein server-Fehler auf, zeigt sich in IIS. Nichts protokolliert einen Fehler im Ereignis - /Anwendungs-log. Nichts zeigt sich in der Chrome-network inspector-tool (auch nicht 404 oder 500er).
Irgendwelche Ideen? Da bin ich überfragt... habe das Gefühl es ist etwas sehr, sehr einfach.
Index.cshtml (standardmäßig generiert code, außer für meine test-code an der Unterseite, nur um sicherzustellen, dass die MVC dlls abgeholt wurden korrekt):
<h3>We suggest the following:</h3>
<ol class="round">
<li class="one">
<h5>Getting Started</h5>
ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
enables a clean separation of concerns and that gives you full control over markup
for enjoyable, agile development. ASP.NET MVC includes many features that enable
fast, TDD-friendly development for creating sophisticated applications that use
the latest web standards.
<a href="http://go.microsoft.com/fwlink/?LinkId=245151">Learn more…</a>
</li>
<li class="two">
<h5>Add NuGet packages and jump-start your coding</h5>
NuGet makes it easy to install and update free libraries and tools.
<a href="http://go.microsoft.com/fwlink/?LinkId=245153">Learn more…</a>
</li>
<li class="three">
<h5>Find Web Hosting</h5>
You can easily find a web hosting company that offers the right mix of features
and price for your applications.
<a href="http://go.microsoft.com/fwlink/?LinkId=245157">Learn more…</a>
</li>
</ol>
@foreach(var i in new int[]{1,2,3,4,5})
{
<div>Test @i.ToString()</div>
}
Gemacht in Chrom:
<h3>We suggest the following:</h3>
<ol class="round">
<li class="one">
<h5>Getting Started</h5>
ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
enables a clean separation of concerns and that gives you full control over markup
for enjoyable, agile development. ASP.NET MVC includes many features that enable
fast, TDD-friendly development for creating sophisticated applications that use
the latest web standards.
<a href="http://go.microsoft.com/fwlink/?LinkId=245151">Learn more…</a>
</li>
<li class="two">
<h5>Add NuGet packages and jump-start your coding</h5>
NuGet makes it easy to install and update free libraries and tools.
<a href="http://go.microsoft.com/fwlink/?LinkId=245153">Learn more…</a>
</li>
<li class="three">
<h5>Find Web Hosting</h5>
You can easily find a web hosting company that offers the right mix of features
and price for your applications.
<a href="http://go.microsoft.com/fwlink/?LinkId=245157">Learn more…</a>
</li>
</ol>
<div>Test 1</div>
<div>Test 2</div>
<div>Test 3</div>
<div>Test 4</div>
<div>Test 5</div>
- Es könnte ein permission-Problem, wo der Benutzer die Verwendung von IIS zum ausführen Ihrer app-pool hat keinen Zugriff auf diese Datei.
- Ich nehme einen Blick auf diese und Bericht zurück.
- Ja, gerade überprüft und Berechtigungen korrekt erscheinen.
- Nick, du hast vollkommen Recht! Ich patzte auf die Berechtigungen für das IUSR-Konto (facepalm). Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, hier die endgültige Lösung (hängt, Kopf in Scham):
Erste, öffnen Sie IIS, klicken Sie auf der web-Seite, öffnen Sie die Authentifizierungs-Einstellungen im IIS-Gruppe, klicken Sie auf Anonyme Authentifizierung, und klicken Sie auf "Bearbeiten" in der rechten Seite des Bedienfelds Aktionen. Hier, beachten Sie, wie die anonyme auth ausgeführt wird. Es könnte sein, einen bestimmten Benutzer oder die app-pool-Verzeichnis.
Entweder Weg, müssen Sie sicherstellen, dass dieses Konto über die richtigen Berechtigungen in der Sicherheit dialog auf das Verzeichnis, das Sie sind, dienen Ihre Website aus. In meinem Fall (und der default-Fall glaube ich, denn das war eine BRANDNEUE box) wird es eingestellt werden, um spezifischen Benutzer: "IUSR". Wie bereits erwähnt, geben Sie dem Benutzer die richtigen Berechtigungen zum Lesen/ausführen von Dateien, und Sie sollten gut zu gehen.
Was kippte mich aus auf diesem war, dass ich versuchen zu laden, statische Dateien wie css oder Bilder und ich war immer 404 oder leitet zu einer login für diese Dateien (ich habe versucht ein paar verschiedene Lösungen in Bezug auf Konten und Berechtigungen).
Referenzen:
Klingt wie die
~\Views\_ViewStart.cshtml
nicht das layout richtig eingestellt.In der Regel sein Inhalt sollte wie folgt Aussehen...
return View();
- und nicht ein teilweiser?return PartialView()
Andere mögliche Probleme können sein:
Build action ist nicht richtig auf die _layout.cshtml-Datei (stellen Sie sicher, es ist "Content" so wird es aufgenommen in das webdeploy package).
Build action ist nicht richtig auf die _ViewStart.cshtml-Datei (stellen Sie sicher, es ist "Content" so wird es aufgenommen in das webdeploy package).
Stellen Sie sicher, dass beide Dateien enthalten sind, die in Ihrem Projekt (ich weiß, es klingt albern, und es ist, aber es ist mir tatsächlich passiert).