Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Tom FitzMacken
In diesem Artikel werden Probleme beschrieben, die Bei der Arbeit mit ASP.NET Webseiten (Razor) und einigen vorgeschlagenen Lösungen auftreten können.
Softwareversionen
- ASP.NET Webseiten (Razor) 3
Dieses Lernprogramm funktioniert auch mit ASP.NET Webseiten 2 und ASP.NET Webseiten 1.0.
Dieses Thema enthält folgende Abschnitte:
- Probleme mit laufenden Seiten
- Probleme mit Razor Code
- Probleme mit Sicherheit und Mitgliedschaft
- Probleme beim Senden von E-Mails
- Zusätzliche Ressourcen
Allgemeine Fragen finden Sie unter ASP.NET Webseiten (Razor) FAQ.
Probleme mit laufenden Seiten
Eine Vielzahl von Problemen kann verhindern, dass .cshtml- und VBHTML-Seiten ordnungsgemäß ausgeführt werden. In diesem Abschnitt werden allgemeine Fehlermeldungen und wahrscheinliche Ursachen aufgeführt.
HTTP-Fehler 403 – Verboten: Zugriff verweigert
Sie sind nicht berechtigt, dieses Verzeichnis oder diese Seite mit den von Ihnen angegebenen Anmeldeinformationen anzuzeigen.
Dieser Fehler kann auftreten, wenn der Server nicht die richtige Version von .NET Framework ausführt. Stellen Sie sicher, dass der Computer, auf dem der Server ausgeführt wird (lokal oder remote), mindestens das .NET Framework 4 installiert ist. Stellen Sie außerdem sicher, dass die Anwendung selbst für die Ausführung der richtigen Version konfiguriert ist.
Wenn dieses Problem während der Arbeit in WebMatrix lokal angezeigt wird, klicken Sie auf den Arbeitsbereich "Website ", und klicken Sie dann in der Strukturansicht auf "Einstellungen". Wählen Sie in der Liste ".NET Framework-Version auswählen" .NET 4 (Integriert) aus. Wenn diese Version bereits festgelegt ist, versuchen Sie, WebMatrix als Administrator auszuführen.
Stellen Sie sicher, dass der Stamm Ihrer Website mindestens eine CSHTML-Datei enthält.
Wenn dieser Fehler angezeigt wird, wenn sich der Webserver auf einem Remoteserver befindet, wenden Sie sich an den Serveradministrator. Stellen Sie sicher, dass der Server .NET Framework 4 oder höher installiert ist. Stellen Sie außerdem sicher, dass die Anwendung in einem Anwendungspool ausgeführt wird, der für die Verwendung dieser Version von the.NET Framework konfiguriert ist.
Wenn Sie die Kontrolle über den Server haben, stellen Sie sicher, dass sie die richtige Version von .NET Framework ausführt. Sie können auch versuchen, die Installation zu reparieren, indem Sie den aspnet_regiis -iru Befehl ausführen. (Wenn Sie IIS nach der Installation von .NET Framework installieren, ist IIS nicht ordnungsgemäß für die Ausführung ASP.NET Seiten konfiguriert.) Weitere Informationen finden Sie unter ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe).
HTTP-Fehler 403.14 – Verboten
Der Webserver ist so konfiguriert, dass der Inhalt dieses Verzeichnisses nicht aufgeführt wird.
Dieser Fehler kann auftreten, wenn Sie eine ressource anfordern, die geschützt ist (z. B. die dateiWeb.config ) oder die sich in einem geschützten Ordner befindet (z. B. App_Data oder App_Code).
HTTP-Fehler 404.17 – Nicht gefunden
Der angeforderte Inhalt scheint ein Skript zu sein und wird nicht vom statischen Dateihandler bereitgestellt.
Dieser Fehler kann auftreten, wenn der Server nicht ordnungsgemäß für die Verwendung von .NET Framework 4 oder höher konfiguriert ist und daher den Code nicht in @{ } Blöcken erkennt. Weitere Informationen finden Sie weiter oben für HTTP-Fehler 403 – Verboten: Zugriff verweigert.
HTTP-Fehler 404.7 – Nicht gefunden
Das Anforderungsfiltermodul ist so konfiguriert, dass die Dateierweiterung verweigert wird.
Dieser Fehler kann auftreten, wenn .cshtml- oder VBHTML-Erweiterungen explizit auf dem Server blockiert wurden. Ein Symptom für dieses Problem ist, dass URLs funktionieren, wenn sie die Erweiterung nicht enthalten, aber URLs, die .cshtml oder .vbhtml enthalten, funktionieren nicht. Eine mögliche Lösung besteht darin, die Erweiterungen in der Web.config-Datei der Website erneut zu aktivieren. Das folgende Beispiel zeigt, wie sie die CSHTML-Erweiterung aktivieren.
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".cshtml" />
<add fileExtension=".cshtml" allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
HTTP-Fehler 404.8 – Nicht gefunden
Das Anforderungsfiltermodul ist so konfiguriert, dass ein Pfad in der URL verweigert wird, die einen hiddenSegment-Abschnitt enthält.
Dieser Fehler kann auftreten, wenn Sie eine ressource anfordern, die geschützt ist (z. B. die dateiWeb.config ) oder die sich in einem geschützten Ordner befindet (z. B. App_Data oder App_Code).
Dieser Seitentyp wird nicht bereitgestellt (Serverfehler in '/' Anwendung)
Siehe beschreibung weiter oben für HTTP-Fehler 404.17.
Probleme mit Razor-Code
Der Name 'Class' ist im aktuellen Kontext nicht vorhanden.
Häufig wird dieser Fehler angezeigt, weil auf ein Hilfsmodul verwiesen wird, das jedoch nicht installiert ist. Wenn Sie beispielsweise versuchen, ein Hilfsprogramm zu verwenden, aber wenn Sie das Paket nicht aus NuGet installiert haben, wird dieser Fehler angezeigt. Verwenden Sie den Katalog in WebMatrix, um das Hilfsprogramm zu suchen und zu installieren.
Wenn das Hilfsprogramm installiert ist, die Seite sie aber immer noch nicht erkennt, fügen Sie dem Code eine using Anweisung hinzu. Verweisen Sie in der using Anweisung auf den Namespace, der die Hilfsfunktion enthält. Die grundlegenden Hilfsprogramme im ASP.NET Webhilfspaket befinden sich beispielsweise im System.Web.Helpers Namespace. Fügen Sie oben auf der Seite, auf der Sie das Hilfsprogramm verwenden möchten, diese Zeile hinzu:
@using Microsoft.Web.Helpers;
Probleme mit Sicherheit und Mitgliedschaft
Wenn Sie das integrierte Sicherheitssystem (Mitgliedschaft) in ASP.NET Webseiten (Razor) verwenden, treten möglicherweise die folgenden Probleme auf.
Um diese Methode aufzurufen, muss die Eigenschaft "Membership.Provider" eine Instanz von "ExtendedMembershipProvider" sein.
Dieser Fehler kann darauf hinweisen, dass keine AspNetSqlMembershipProvider Klasse konfiguriert ist. (Ein Symptom ist, dass die Website lokal funktioniert, löst diesen Fehler jedoch aus, wenn Sie ihn auf dem Server eines Hostinganbieters veröffentlichen.) Eine Lösung für dieses Problem besteht darin, die einfache Mitgliedschaft explizit zu aktivieren, indem Sie der Web.config-Datei der Website Folgendes hinzufügen:
<configuration>
<!-- other setting -->
<appSettings>
<add key="enableSimpleMembership" value="true" />
</appSettings>
<!-- other settings -->
</configuration>
Probleme beim Senden von E-Mails
Probleme beim Senden von E-Mails können beim Debuggen schwierig sein. Ein anfängliches Problem kann sein, dass Sie keine Verbindung mit dem SMTP-Server herstellen können. Wenn die Verbindung erfolgreich ist, übergibt ASP.NET die Nachricht an den SMTP-Server. Es kann jedoch Probleme mit der Nachricht selbst geben, die verhindert, dass der SMTP-Server sie sendet.
Wenn Ihre Anwendung keine E-Mails erfolgreich sendet, versuchen Sie Folgendes:
- Der SMTP-Servername ist häufig etwa wie
smtp.provider.comodersmtp.provider.net. Wenn Sie Ihre Website jedoch in einem Hostinganbieter veröffentlichen, kann der SMTP-Servername an diesem Punkt lautenlocalhost. Diese Situation tritt auf, weil der SMTP-Server aus der Perspektive Ihrer Anwendung möglicherweise lokal ist, nachdem Sie die Veröffentlichung vorgenommen haben und Ihre Website auf dem Server des Anbieters läuft. Diese Änderung der Servernamen bedeutet möglicherweise, dass Sie den SMTP-Servernamen im Rahmen ihres Veröffentlichungsprozesses ändern müssen. - Die Portnummer ist in der Regel 25. Einige Anbieter erfordern jedoch, dass Sie Port 587 oder einen anderen Port verwenden. Überprüfen Sie mit dem Besitzer des SMTP-Servers, welche Portnummer sie verwenden möchten.
- Stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen verwenden. Wenn Sie Ihre Website in einem Hostinganbieter veröffentlicht haben, verwenden Sie die Anmeldeinformationen, die der Anbieter speziell angegeben hat, für E-Mails. Diese Anmeldeinformationen unterscheiden sich möglicherweise von den Anmeldeinformationen, die Sie zum Veröffentlichen verwenden.
- Manchmal benötigen Sie überhaupt keine Anmeldeinformationen. Wenn Sie E-Mails mithilfe Ihres persönlichen Internetdienstanbieters senden, kennt Ihr E-Mail-Anbieter möglicherweise bereits Ihre Anmeldeinformationen. Nach der Veröffentlichung müssen Sie möglicherweise andere Anmeldeinformationen verwenden als beim Testen auf Ihrem lokalen Computer.
- Wenn Ihr E-Mail-Anbieter Verschlüsselung verwendet, legen Sie
WebMail.EnableSslauftruefest.
Wenn beim Senden von E-Mails ein Fehler auftritt, wird möglicherweise eine standardmäßige ASP.NET Fehlermeldung angezeigt, die wie folgt aussieht:
Sie können auch Probleme beim Senden von E-Mails mithilfe eines try-catch Blocks debuggen, wie im folgenden Beispiel gezeigt. Wenn Sie einen try-catch Block verwenden, zeigt ASP.NET die Standardfehlermeldungen nicht an. Stattdessen können Sie den Fehler im catch Teil des Blocks erfassen.
var errorMessage = "";
try {
// Initialize WebMail helper
WebMail.SmtpServer = "your-SMTP-server-name";
WebMail.SmtpPort = 25; // Or the port you've been told to use
WebMail.EnableSsl = false;
WebMail.UserName = "your-login-name";
WebMail.Password = "your-password";
WebMail.From = "your-from-address";
WebMail.Send(to: test-To-address,
subject: "Test email message",
body: "This is a debug email message"
);
}
catch (Exception ex ) {
errorMessage = ex.Message;
}
// Other code or markup here ...
<!-- In markup, add the following -->
@if(!errorMessage.IsEmpty()){
<p>@errorMessage</p>
}
Ersetzen Sie die entsprechenden Werte für your-SMTP-server-nameusw. Einige der Fehlermeldungen, die Auf diese Weise möglicherweise angezeigt werden, umfassen Folgendes:
Fehler beim Senden von E-Mails.
- oder -
Fehler bei einem Verbindungsversuch, da die verbundene Seite nach einem bestimmten Zeitraum nicht ordnungsgemäß reagiert hat oder die Verbindung fehlgeschlagen ist, da der verbundene Host nicht reagiert hat.
Dieser Fehler bedeutet in der Regel, dass die Anwendung keine Verbindung mit dem SMTP-Server herstellen konnte. Überprüfen Sie den Servernamen und die Portnummer.
Postfach nicht verfügbar. Die Serverantwort lautete: 5.1.0 <someuser@invaliddomain> Absender abgelehnt: ungültige Absenderdomäne
Diese Meldung kann darauf hinweisen, dass die
FromAdresse nicht korrekt ist oder fehlt.Die angegebene Zeichenfolge ist nicht in der Form angegeben, die für eine E-Mail-Adresse erforderlich ist.
Dieser Fehler kann darauf hinweisen, dass die Werte der Eigenschaften
TooderFromnicht als E-Mail-Adressen erkannt werden. (ASP.NET kann nicht überprüfen, ob die E-Mail-Adresse gültig ist. Es wird nur kontrolliert, dass sie sich im richtigen Format befindet, z. B. name@domain.com.)
Hinweis
Entfernen Sie das Markup, das den Fehler anzeigt (@errorMessage), bevor Sie die Seite auf einer Livewebsite veröffentlichen. Es empfiehlt sich nicht, Benutzern das Anzeigen von Fehlermeldungen zu ermöglichen, die Sie von einem Server erhalten.
Zusätzliche Ressourcen
häufig gestellte Fragen zu ASP.NET Webseiten (Razor)
WebMatrix und ASP.NET Webseiten-Forum auf der ASP.NET Website