ASP.NET Web Pages (Razor) - Guide de résolution des problèmes
par Tom FitzMacken
Cet article décrit les problèmes que vous pouvez rencontrer lors de l’utilisation de pages Web ASP.NET (Razor) et quelques solutions suggérées.
Versions des logiciels
- pages Web ASP.NET (Razor) 3
Ce tutoriel fonctionne également avec pages Web ASP.NET 2 et pages Web ASP.NET 1.0.
Cette rubrique contient les sections suivantes :
- Problèmes liés aux pages en cours d’exécution
- Problèmes liés au code Razor
- Problèmes liés à la sécurité et à l’appartenance
- Problèmes liés à l’envoi de Email
- Ressources supplémentaires
Pour les questions générales, consultez pages Web ASP.NET (Razor) FAQ.
Problèmes liés aux pages en cours d’exécution
Divers problèmes peuvent empêcher l’exécution correcte des pages .cshtml et .vbhtml . Cette section répertorie les messages d’erreur courants et les causes probables.
Erreur HTTP 403 - Interdit : l’accès est refusé
Vous n’êtes pas autorisé à afficher ce répertoire ou cette page à l’aide des informations d’identification que vous avez fournies.
Cette erreur peut se produire si le serveur n’exécute pas la version correcte du .NET Framework. Vérifiez que .NET Framework 4 est installé sur l’ordinateur qui exécute le serveur (localement ou à distance). Vérifiez également que l’application elle-même est configurée pour exécuter la version appropriée.
Si vous voyez ce problème localement lorsque vous travaillez dans WebMatrix, cliquez sur l’espace de travail Site , puis dans l’arborescence, cliquez sur Paramètres. Dans la liste Sélectionner la version du .NET Framework, sélectionnez .NET 4 (Intégré). Si cette version est déjà définie, essayez d’exécuter WebMatrix en tant qu’administrateur.
Assurez-vous que la racine de votre site web contient au moins un fichier .cshtml .
Si vous voyez cette erreur lorsque le serveur web se trouve sur un serveur distant, contactez l’administrateur du serveur. Vérifiez que .NET Framework 4 ou version ultérieure est installé sur le serveur. Vérifiez également que l’application s’exécute dans un pool d’applications configuré pour utiliser cette version de the.NET Framework.
Si vous contrôlez le serveur, assurez-vous qu’il exécute la version correcte du .NET Framework. Vous pouvez également essayer de réparer l’installation en exécutant la aspnet_regiis -iru
commande . (Par exemple, si vous installez IIS après avoir installé le .NET Framework, IIS ne sera pas correctement configuré pour exécuter ASP.NET pages.) Pour plus d’informations, consultez ASP.NET’outil d’inscription IIS (Aspnet_regiis.exe).
Erreur HTTP 403.14 - Interdit
Le serveur Web est configuré pour ne pas répertorier le contenu de ce répertoire.
Cette erreur peut se produire si vous demandez une ressource protégée (comme le fichier Web.config ) ou qui se trouve dans un dossier protégé (comme App_Data ou App_Code).
Erreur HTTP 404.17 - Introuvable
Le contenu demandé semble être un script et ne sera pas pris en charge par le gestionnaire de fichiers statiques.
Cette erreur peut se produire si le serveur n’est pas configuré correctement pour utiliser .NET Framework 4 ou version ultérieure et ne reconnaît donc pas le code en @{ }
blocs. Consultez la description plus haut pour l’erreur HTTP 403 - Interdit : l’accès est refusé.
Erreur HTTP 404.7 - Introuvable
Le module de filtrage des demandes est configuré pour refuser l’extension de fichier
Cette erreur peut se produire si les extensions .cshtml ou .vbhtml ont été explicitement bloquées sur le serveur. Un symptôme de ce problème est que les URL fonctionnent quand elles n’incluent pas l’extension, mais que les URL qui incluent .cshtml ou .vbhtml ne fonctionnent pas. Une solution possible consiste à réactiver les extensions dans le fichier Web.config du site. L’exemple suivant montre comment activer l’extension .cshtml .
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".cshtml" />
<add fileExtension=".cshtml" allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
Erreur HTTP 404.8 - Introuvable
Le module de filtrage des demandes est configuré pour refuser un chemin d’accès dans l’URL qui contient une section hiddenSegment.
Cette erreur peut se produire si vous demandez une ressource protégée (comme le fichier Web.config ) ou qui se trouve dans un dossier protégé (comme App_Data ou App_Code).
Ce type de page n’est pas pris en charge (Erreur serveur dans l’application « / »)
Consultez la description plus haut pour l’erreur HTTP 404.17.
Problèmes liés au code Razor
Le nom 'class' n’existe pas dans le contexte actuel
Souvent, l’une des raisons pour lesquelles vous voyez cette erreur est que class
fait référence à une assistance, mais que l’assistance n’est pas installée. Par exemple, si vous essayez d’utiliser une assistance, mais que vous n’avez pas installé le package à partir de NuGet, cette erreur s’affiche. Utilisez la galerie dans WebMatrix pour rechercher et installer l’assistance.
Si l’assistance est installée, mais que la page ne le reconnaît toujours pas, essayez d’ajouter une using
instruction au code. Dans l’instruction using
, référencez l’espace de noms qui inclut l’assistance. Par exemple, les assistances de base qui se trouvent dans le package Web Helpers ASP.NET se trouvent dans l’espace de System.Web.Helpers
noms. En haut de la page où vous souhaitez utiliser l’assistance, ajoutez cette ligne :
@using Microsoft.Web.Helpers;
Problèmes liés à la sécurité et à l’appartenance
Si vous utilisez le système intégré de sécurité (appartenance) dans pages Web ASP.NET (Razor), vous pouvez rencontrer les problèmes suivants.
Pour appeler cette méthode, la propriété « Membership.Provider » doit être une instance de « ExtendedMembershipProvider »
Cette erreur peut indiquer qu’aucune classe n’est AspNetSqlMembershipProvider
configurée. (Un symptôme est que le site fonctionne correctement localement, mais génère cette erreur lorsque vous le publiez sur le serveur d’un fournisseur d’hébergement.) Un correctif pour ce problème consiste à activer explicitement l’appartenance simple en ajoutant ce qui suit au fichier Web.config du site :
<configuration>
<!-- other setting -->
<appSettings>
<add key="enableSimpleMembership" value="true" />
</appSettings>
<!-- other settings -->
</configuration>
Problèmes liés à l’envoi de Email
Les problèmes liés à l’envoi d’e-mails peuvent être difficiles à déboguer. Un problème initial peut être que vous ne pouvez pas vous connecter au serveur SMTP. Si la connexion réussit, ASP.NET remet le message au serveur SMTP. Toutefois, il peut y avoir des problèmes avec le message lui-même qui empêchent le serveur SMTP de l’envoyer.
Si votre application n’envoie pas correctement des e-mails, essayez les opérations suivantes :
- Le nom du serveur SMTP est souvent quelque chose comme
smtp.provider.com
ousmtp.provider.net
. Toutefois, si vous publiez votre site sur un fournisseur d’hébergement, le nom du serveur SMTP à ce stade peut êtrelocalhost
. Cette situation se produit car une fois que vous avez publié et que votre site s’exécute sur le serveur du fournisseur, le serveur SMTP peut être local du point de vue de votre application. Cette modification des noms de serveurs peut signifier que vous devez modifier le nom du serveur SMTP dans le cadre de votre processus de publication. - Le numéro de port est généralement 25. Toutefois, certains fournisseurs vous obligent à utiliser le port 587 ou un autre port. Vérifiez auprès du propriétaire du serveur SMTP le numéro de port qu’il s’attend à ce que vous utilisiez.
- Veillez à utiliser les informations d’identification appropriées. Si vous avez publié votre site auprès d’un fournisseur d’hébergement, utilisez les informations d’identification que le fournisseur a spécifiquement indiquées pour l’e-mail. Ces informations d’identification peuvent être différentes des informations d’identification que vous utilisez pour publier.
- Parfois, vous n’avez pas du tout besoin d’informations d’identification. Si vous envoyez des e-mails à l’aide de votre fournisseur de services Internet personnel, votre fournisseur de messagerie connaît peut-être déjà vos informations d’identification. Après la publication, vous devrez peut-être utiliser des informations d’identification différentes de celles que vous effectuez lors du test sur votre ordinateur local.
- Si votre fournisseur de messagerie utilise le chiffrement, définissez sur
WebMail.EnableSsl
true
.
En cas d’erreur lors de l’envoi d’un e-mail, vous pouvez voir un message d’erreur standard ASP.NET, qui ressemble à ceci :
Vous pouvez également déboguer les problèmes liés à l’envoi d’e-mails à l’aide d’un try-catch
bloc, comme dans l’exemple suivant. Lorsque vous utilisez un try-catch
bloc, ASP.NET n’affiche pas ses messages d’erreur standard. Au lieu de cela, vous pouvez capturer l’erreur dans la catch
partie du bloc.
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>
}
Remplacez les valeurs appropriées par your-SMTP-server-name
, et ainsi de suite. Voici quelques-uns des messages d’erreur que vous pouvez voir de cette façon :
Échec de l’envoi du courrier.
-ou-
Une tentative de connexion a échoué, car la partie connectée n’a pas répondu correctement après un certain temps, ou la connexion établie a échoué parce que l’hôte connecté n’a pas répondu
Cette erreur signifie généralement que l’application n’a pas pu se connecter au serveur SMTP. Vérifiez le nom du serveur et le numéro de port.
Boîte aux lettres non disponible. La réponse du serveur était : 5.1.0 <someuser@invaliddomain> expéditeur rejeté : domaine de l’expéditeur non valide
Ce message peut indiquer que l’adresse
From
n’est pas correcte ou est manquante.La chaîne spécifiée n’est pas sous la forme requise pour une adresse e-mail.
Cette erreur peut indiquer que la valeur des propriétés ou
From
n’estTo
pas reconnue en tant qu’adresses e-mail. (ASP.NET ne peut pas case activée que l’adresse e-mail est valide, mais qu’elle est au format correct, comme name@domain.com.)
Notes
Supprimez le balisage qui affiche l’erreur (@errorMessage
) avant de publier la page sur un site actif. Il n’est pas judicieux de laisser les utilisateurs voir les messages d’erreur que vous obtenez d’un serveur.
Ressources supplémentaires
ASP.NET Web Pages - Questions fréquentes (FAQ) (Razor)
WebMatrix et pages Web ASP.NET forum sur le site web ASP.NET