2011-03-18 2 views
2

J'ai créé une application MVC3 et ajouté l'attribut cutomerrors sur dans web.config. Il fonctionne en chrome et Firefox, mais quand je le lance dans IE9, je reçoisgestion des erreurs dans asp.net MVC3

Le site ne peut pas afficher la page

HTTP 500

causes les plus probables: • Le site est en maintenance. • Le site Web présente une erreur de programmation.

Qu'est-ce que vous pouvez essayer:

<?xml version="1.0"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=152368 
    --> 

<configuration> 
    <appSettings> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 

    <system.web> 
     <customErrors mode="On"></customErrors> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
    </authentication> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages"/> 
     </namespaces> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Répondre

3

Il existe un problème connu dans les versions d'Internet Explorer où une page d'erreur personnalisée doit être d'au moins 512 octets. Bien que cela s'applique généralement aux vieilles versions d'IE et aboutissant généralement à une page d'erreur 404, je vous recommande de vous assurer que votre page d'erreur personnalisée est, disons, de 1 Ko de taille. Vous pourriez mettre des commentaires HTML dans ou quelque chose. Juste pour m'assurer que ça n'a rien à voir avec ce vieux bug d'IE.

Juste une référence de beaucoup: http://perishablepress.com/press/2008/01/21/important-note-for-your-custom-error-pages/

+0

merci cela a fonctionné. Un problème cependant est que j'utilise le serveur de développement VS. donc quand je cours mon application MVC, il frappe l'endroit où l'exception s'est produite dans le contrôleur et puis j'appuie sur entrer pour montrer la page d'erreur. ne peut pas aller directement à la page d'erreur? – DotnetSparrow

+0

Que voulez-vous dire par "ça frappe l'endroit"? Voulez-vous dire VS détient dans le débogueur? Si c'est le cas, vous pouvez utiliser votre menu principal Visual Studio "Debug" »" Exceptions ... "et vous pouvez configurer les exceptions que vous souhaitez gérer, cela pourrait aider. Pour plus de contrôle, vous pouvez regarder ici: http://stackoverflow.com/questions/183316/asp-net-mvc-handleerror/192371#192371 (Mais c'est une autre histoire) – thmshd

+0

Merci! Après d'innombrables heures d'essayer de comprendre ... Je dois aimer IE. +1 – edgi

0

C'est la page d'erreur IE intégré. Pouvez-vous poster votre web.config pour que nous puissions voir ce que vous avez dedans?

<customErrors mode="On" defaultRedirect="/Home/Error"> 
    <error statusCode="403" redirect="/Home/NoAccess" /> 
    <error statusCode="404" redirect="/Home/NotFound" /> 
    <error statusCode="500" redirect="/Home/Internal" /> 
</customErrors> 

Est ce que je m'attendrais à voir dans la configuration web. Je ne suis pas sûr de la page affichée dans les autres navigateurs.

Je suppose que IE9 s'attend à ce que du contenu soit renvoyé, essayez d'ajouter l'action interne et la vue à votre contrôleur domestique et en spécifiant defaultRedirect = "/ Home/Internal" et voyez si cela fonctionne.

+0

J'ai mis à jour la question. S'il vous plaît voir le web.config – DotnetSparrow