Share via


Leitfaden zur Behandlung von Problemen mit ASP.NET Web Pages (Razor)

von Tom FitzMacken

In diesem Artikel werden Probleme beschrieben, die bei der Arbeit mit ASP.NET Web Pages (Razor) auftreten können, und einige vorgeschlagene Lösungen.

Softwareversionen

  • ASP.NET Web Pages (Razor) 3

Dieses Tutorial funktioniert auch mit ASP.NET Web Pages 2 und ASP.NET Web Pages 1.0.

Dieses Thema enthält folgende Abschnitte:

Allgemeine Fragen finden Sie unter häufig gestellte Fragen zu ASP.NET Web Pages (Razor).

Probleme mit ausgeführten Seiten

Eine Vielzahl von Problemen kann verhindern, dass CSHTML - und VBHTML-Seiten ordnungsgemäß ausgeführt werden. In diesem Abschnitt werden häufige Fehlermeldungen und wahrscheinliche Ursachen aufgeführt.

HTTP-Fehler 403 – Unzulässig: Der Zugriff wird verweigert

Sie sind nicht berechtigt, dieses Verzeichnis oder diese Seite mit den von Ihnen angegebenen Anmeldeinformationen anzuzeigen.

Dieser Fehler kann auftreten, wenn auf dem Server nicht die richtige Version des .NET Framework ausgeführt wird. Stellen Sie sicher, dass auf dem Computer, auf dem der Server (lokal oder remote) ausgeführt wird, mindestens die .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 lokal bei der Arbeit in WebMatrix auftritt, 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ählendie Option .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 auf dem Server die .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 die richtige Version des .NET Framework ausgeführt wird. Sie können auch versuchen, die Installation zu reparieren, indem Sie den aspnet_regiis -iru Befehl ausführen. (Wenn Sie beispielsweise IIS installieren, nachdem Sie die .NET Framework installiert haben, wird 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 er den Inhalt dieses Verzeichnisses nicht auflistet.

Dieser Fehler kann auftreten, wenn Sie eine ressource anfordern, die geschützt ist (z. B. die Web.config datei) oder 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 Handler für statische Dateien bereitgestellt.

Dieser Fehler kann auftreten, wenn der Server nicht ordnungsgemäß für die Verwendung des .NET Framework 4 oder höher konfiguriert ist und daher den Code nicht in @{ } Blöcken erkennt. Weitere Informationen finden Sie in der obigen Beschreibung für HTTP-Fehler 403 – Verboten: Zugriff wird 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 dieses Problems 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, der einen HiddenSegment-Abschnitt enthält.

Dieser Fehler kann auftreten, wenn Sie eine ressource anfordern, die geschützt ist (z. B. die Web.config datei) oder sich in einem geschützten Ordner befindet (z. B. App_Data oder App_Code).

Dieser Seitentyp wird nicht bedient (Serverfehler in der "/"-Anwendung)

Weitere Informationen finden Sie weiter oben für HTTP-Fehler 404.17.

Probleme mit Razor-Code

Der Name "Klasse" ist im aktuellen Kontext nicht vorhanden.

Häufig wird dieser Fehler auch dadurch verursacht, dass class auf ein Hilfsprogramm verwiesen wird, das Hilfsprogramm jedoch nicht installiert ist. Wenn Sie beispielsweise versuchen, ein Hilfsprogramm zu verwenden, aber das Paket von NuGet nicht installiert haben, wird dieser Fehler angezeigt. Verwenden Sie den Katalog in WebMatrix, um das Hilfsprogramm zu finden und zu installieren.

Wenn das Hilfsprogramm installiert ist, die Seite es jedoch immer noch nicht erkennt, versuchen Sie, dem Code eine using Anweisung hinzuzufügen. Verweisen Sie in der using -Anweisung auf den Namespace, der das Hilfsprogramm enthält. Beispielsweise befinden sich die grundlegenden Hilfsprogramme im Paket ASP.NET Web helpers im System.Web.Helpers Namespace. Fügen Sie oben auf der Seite, auf der Sie das Hilfsprogramm verwenden möchten, die folgende Zeile hinzu:

@using Microsoft.Web.Helpers;

Probleme mit Sicherheit und Mitgliedschaft

Wenn Sie das integrierte Sicherheitssystem (Mitgliedschaft) in ASP.NET Web Pages (Razor) verwenden, treten möglicherweise die folgenden Probleme auf.

Zum Aufrufen dieser Methode muss die "Membership.Provider"-Eigenschaft eine instance von "ExtendedMembershipProvider" sein.

Dieser Fehler kann darauf hinweisen, dass keine AspNetSqlMembershipProvider Klasse konfiguriert ist. (Ein Symptom ist, dass die Website lokal einwandfrei funktioniert, aber diesen Fehler auslöst, wenn Sie sie 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 Email

Probleme beim Senden von E-Mails können schwierig zu debuggen sein. Ein anfängliches Problem kann sein, dass Sie keine Verbindung mit dem SMTP-Server herstellen können. Wenn die Verbindung erfolgreich ist, ASP.NET die Nachricht an den SMTP-Server weitergibt. Es kann jedoch Probleme mit der Nachricht selbst geben, die verhindern, dass der SMTP-Server sie sendet.

Wenn Ihre Anwendung keine E-Mails erfolgreich sendet, versuchen Sie Folgendes:

  • Der NAME des SMTP-Servers ist oft etwas wie smtp.provider.com oder smtp.provider.net. Wenn Sie Ihre Website jedoch bei einem Hostinganbieter veröffentlichen, kann der SMTP-Servername an diesem Punkt lauten localhost. Diese Situation tritt auf, da der SMTP-Server aus Sicht Ihrer Anwendung möglicherweise lokal ist, nachdem Sie veröffentlicht haben und ihre Website auf dem Server des Anbieters ausgeführt wird. Diese Änderung der Servernamen kann bedeuten, dass Sie den SMTP-Servernamen im Rahmen des Veröffentlichungsprozesses ändern müssen.
  • Die Portnummer ist normalerweise 25. Einige Anbieter erfordern jedoch, dass Sie Port 587 oder einen anderen Port verwenden. Erkundigen Sie sich beim Besitzer des SMTP-Servers, welche Portnummer von Ihnen erwartet wird.
  • Stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen verwenden. Wenn Sie Ihre Website bei einem Hostinganbieter veröffentlicht haben, verwenden Sie die Anmeldeinformationen, die der Anbieter speziell für E-Mails angegeben hat. Diese Anmeldeinformationen können sich von den Anmeldeinformationen unterscheiden, die Sie zum Veröffentlichen verwenden.
  • Manchmal benötigen Sie überhaupt keine Anmeldeinformationen. Wenn Sie E-Mails mit Ihrem persönlichen ISP senden, kennt Ihr E-Mail-Anbieter möglicherweise bereits Ihre Anmeldeinformationen. Nach der Veröffentlichung müssen Sie möglicherweise andere Anmeldeinformationen als beim Testen auf Ihrem lokalen Computer verwenden.
  • Wenn Ihr E-Mail-Anbieter die Verschlüsselung verwendet, legen Sie auf truefestWebMail.EnableSsl.

Wenn ein Fehler beim Senden einer E-Mail vorliegt, wird möglicherweise eine Standard-ASP.NET Fehlermeldung angezeigt, die wie folgt aussieht:

ASP.NET Fehlermeldung, wenn ein E-Mail-Problem auftritt

Sie können probleme beim Senden von E-Mails auch mithilfe eines try-catch Blocks debuggen, wie im folgenden Beispiel gezeigt. Wenn Sie einen try-catch Block verwenden, zeigt ASP.NET keine Standardfehlermeldungen 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 durch your-SMTP-server-nameusw. Zu den Fehlermeldungen, die auf diese Weise möglicherweise angezeigt werden, gehören die folgenden:

  • Fehler beim Senden von E-Mails.

    - oder -

    Ein Verbindungsversuch ist fehlgeschlagen, weil die verbundene Partei nach einer bestimmten Zeit nicht ordnungsgemäß reagiert hat, oder weil die verbindung hergestellte Verbindung fehlgeschlagen ist, weil der verbundene Host nicht reagiert hat.

    Dieser Fehler bedeutet normalerweise, 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 From Adresse nicht korrekt ist oder fehlt.

  • Die angegebene Zeichenfolge befindet sich nicht in der für eine E-Mail-Adresse erforderlichen Form.

    Dieser Fehler kann darauf hindeuten, dass der Wert der To Eigenschaften oder From nicht als E-Mail-Adressen erkannt wird. (ASP.NET kann nicht überprüfen, ob die E-Mail-Adresse gültig ist, nur, dass sie das richtige Format aufweist, z. B name@domain.com. .)

Hinweis

Entfernen Sie das Markup, das den Fehler (@errorMessage) anzeigt, bevor Sie die Seite auf einer Livewebsite veröffentlichen. Es ist keine gute Idee, Benutzern fehlermeldungen anzuzeigen, die Sie von einem Server erhalten.

Zusätzliche Ressourcen

ASP.NET-Webseiten (Razor) – FAQs

WebMatrix- und ASP.NET Web Pages-Forum auf der ASP.NET Website