2010-11-10 12 views
0

J'ai un comportement un peu bizarre avec mon application ASP.NET MVC 2. J'utilise IIS 7.5, l'authentification Windows et l'emprunt d'identité ASP.NET pour charger ma page Web.ASP.NET MVC 2 et IIS: HTTP 500.24 favicon.ico Erreur

Après plusieurs recherches, je ne trouve une belle façon de se débarrasser de la demande 500,24 que je continue à obtenir sur chaque chargement de page (Le favicon.ico dans le répertoire racine déclenche ce):

Fiddler

J'ai regardé quelques articles comme this one ou that one mais ceci ne semble pas résoudre mon problème. J'ai besoin de ces paramètres pour que mon application fonctionne ici: le pipeline en mode intégré .NET 4 Framework, l'authentification Windows et l'emprunt d'identité ASP.NET.

est ici une version simplifiée de mon web.config, si elle peut aider toute personne (bien sûr, je l'ai enlevé les chaînes de connexions pour des raisons de sécurité ..)

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
    <customErrors mode="Off" /> 
    <identity impersonate="true" /> 
    <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.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 
    <authentication mode="Windows"> 
     <!-- roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/--> 
     <!-- forms loginUrl="~/Account/LogOn" timeout="2880"/--> 
    </authentication> 
    <membership> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Globe" /> 
     </providers> 
    </membership> 
    <profile> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/Globe" /> 
     </providers> 
    </profile> 
    <roleManager enabled="false"> 
     <providers> 
     <clear /> 
     <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/Globe" /> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/Globe" /> 
     </providers> 
    </roleManager> 
    <pages> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     </namespaces> 
    </pages> 
    </system.web> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="X-UA-Compatible" value="IE=edge" /> 
     </customHeaders> 
    </httpProtocol> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <security> 
     <requestFiltering> 
     <verbs> 
      <add verb="PUT" allowed="true" /> 
      <add verb="DELETE" allowed="true" /> 
     </verbs> 
     </requestFiltering> 
    </security> 
    </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" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
    </system.serviceModel> 
</configuration> 

Mon application fonctionne, le favicon .ico est en train de charger, je me demande juste pourquoi il déclenche un 500.24 à chaque requête (bien sûr, c'est peut-être Fiddler qui ne peut pas s'authentifier et provoque une erreur HTTP de 500.24, mais quand il le fait normalement déclenche un 401.2 - Non autorisé à la place ...)

+0

sur le web la suggestion rapide semble être son l'emprunt d'identité = true. Avez-vous essayé de passer en mode classique (suggéré par de nombreux liens) pour voir si cela fonctionne.comme je devine le "" n'a pas fonctionné pour vous – dbones

+0

Je ne peux pas aller avec le mode classique, puisque mon application nécessite le pipeline intégré, et à la fois le ' 'et ' sont déjà appliquées dans mon web.config. – LoganWolfer

Répondre

2

Ma conjecture est que favicon.ico est soit en cours d'exécution dans un pool d'applications différent, ou il y a un web.config dans la racine du site qui a des problèmes. Donc: 1) Vérifiez pour voir si la racine du site (le répertoire où /favicon.ico vit) comprend un web.config. Si c'est le cas, vérifiez si elle définit un system.web/httpModule, ou httpHandler, ou system.web/identité (imiter) ou quelque chose comme ça, et le pool d'applications est en cours d'exécution en mode intégré. Donc, ce que vous devez faire est de supprimer le paramètre httpmodule/httphandler/impersonate offensant, ou de modifier le pool d'applications pour qu'il soit classique ou ajouter la même configuration que votre site qui est < validation validateIntegratedModeConfiguration = "false"/>

+0

Je vais me pencher là-dessus, mais j'ai besoin du pipeline intégré, et le '' ne me fait rien. Il y a en effet un fichier web.config généré dans le fichier C: \ inetpub \ wwwroot, j'ai essayé d'ajouter '' au fichier wwwroot web.config, et je n'ai toujours pas fait de changement. L'impersonate = true est également dans le web.config du wwwroot. Comment puis-je savoir quel httpmodule/httphandler provoque cela? Il existe un seul site Web et une seule application, et tous deux utilisent le même pool d'applications. Des idées ? – LoganWolfer

0

Ce que dit CarlosAg. Correctif à bas prix pourrait être de déplacer le favicon dans l'application offensée plutôt que d'aboyer l'arbre.

0

J'ai trouvé la réponse à mon problème =)

Vous êtes rire va me, bien sûr .. = P

Eh bien, une partie de la réponse est le <validation validateIntegratedModeConfiguration="false" /> dans le répertoire C: \ inetpub \ wwwroot que CarlosAg a souligné, mais l'autre partie était que j'ai simplement oublié d'ajouter le <link rel="icon" href="<%: Url.Content("~/favicon.ico")%>" type="image/x-icon" /> à mon fichier Site.Master dans mon application ASP.NET MVC 2. Depuis Chrome et IE regarde le répertoire racine pour un favicon.ico, il a semblé fonctionner, mais je n'ai pas remarqué jusqu'à présent que Firefox ne chargeait pas le favicon.

Maintenant, le favicon se charge sur chaque navigateur, et il n'y a pas de requête HTTP 500.24 envoyée dans Fiddler.

Merci! =)