J'ai écrit un module d'authentification de formulaires personnalisés et lorsque je l'ajoute au web.config de mon application MVC2 et que je l'exécute sous IIS7.5 J'ai l'erreur HTTP 403.14. Si j'essaie de naviguer vers l'une des URL routés, alors je reçois simplement une erreur 404. La chose agaçante est que j'ai fait tous les tests en utilisant Cassini sans aucun problème. J'ai appliqué tous les correctifs de tous les problèmes similaires en vain. Le problème semble être qu'avec mon module enregistré Mvc Routing cesse de fonctionner. De toute évidence, cela semble impliquer mon module mais pourquoi a-t-il fonctionné tout le temps en utilisant le serveur web intégré? Voici les parties System.x de mon web.config:Lorsque j'ajoute FormsAuthentication au site ASP.NET MVC2 dans IIS7.5, j'obtiens l'erreur HTTP 403.14
<system.web>
<compilation debug="true" defaultLanguage="c#" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<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.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="Ewdev.Gatekeeper.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=02ca582b160d0e09" />
</assemblies>
</compilation>
<authentication mode="Forms">
<forms defaultUrl="/" loginUrl="/Authentication/Login" enableCrossAppRedirects="true" name=".GKAUTH" path="/" requireSSL="false" timeout="1440" />
</authentication>
<membership defaultProvider="GatekeeperMembershipProvider" userIsOnlineTimeWindow="120">
<providers>
<clear />
<add name="GatekeeperMembershipProvider" type="Ewdev.Security.MembershipProviders.GatekeeperMembershipProvider, Ewdev.Gatekeeper.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=02ca582b160d0e09" connectionStringName="Ewdev Database" minRequiredPasswordLength="7" minRequiredAlphabeticCharacters="3" minRequiredAlphabeticCaseChanges="1" minRequiredNumericCharacters="1" minRequiredNonAlphanumericCharacters="0" passwordWordsPolicy="true" passwordHistoryPolicy="13" enablePasswordRetrieval="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" minRequiredUserNameLength="6" minRequiredUserNameAlphabeticCharacters="1" minRequiredUserNameNumericCharacters="0" userNameEnableNonAlphanumeric="true" userNameWordsPolicy="true" />
</providers>
</membership>
<customErrors mode="On" />
<pages>
<namespaces>
<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.Linq" />
<add namespace="System.Collections.Generic" />
</namespaces>
</pages>
<trace enabled="false" mostRecent="true" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="true" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="Ewdev.Security.GatekeeperFormsAuthenticationModule" preCondition="" />
</modules>
<handlers>
<remove name="MvcHttpHandler" />
<add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
</system.webServer>
Tout cela est en cours d'exécution sur mon ordinateur de bureau Windows 7 x64 avec VS2010, .NET 4 et MVC2. J'ai ASP.NET4 installé/enregistré dans IIS. Je suppose que vous voudrez probablement savoir ce qu'il y a dans le module mais la source est plutôt longue, donc je ne sais pas quel bit serait pertinent. Il est construit selon la même spécification d'API que celle intégrée, mais en dehors de la redirection vers la page de connexion, il n'y a pas d'autres modifications à l'Url de requête et l'erreur apparaît lorsque vous essayez d'afficher la page d'accueil ouverte à tout le monde. J'ai lu que cela pourrait être quelque chose à faire avec des ressources non-aspx telles que le script, css, fichiers image que les modules sont configurés pour être appliqués à tous les types de ressources? D'autres idées ont été dans la ligne de mon module appelé après le module de routage Url, mais je ne suis pas convaincu de celui-ci, et troisièmement que le Global.asax pourrait ne pas être appelé? Je suis dans mon 3ème jour à me déchirer les cheveux sur celui-ci, principalement parce que j'ai estimé 1h pour installer le site sur IIS ... Doh!
J'apprécierais toute aide que je peux obtenir et je serais ravi de réécrire mon module si seulement je pouvais déterminer ce que IIS n'aime pas. Cassini aime :-(
Non, c'était un hareng rouge l'MvcHttpHandler était MVC 1 chose et n'est plus utilisé pour MVC 2, mais je tentais quoi que ce soit, surtout si elle avait quelque chose à faire avec routage. – user462823