2008-10-09 3 views
18

J'utilise IIS6, j'ai écrit un HttpModule et j'ai cette erreur? Après avoir cherché sur le web, je trouve que ce problème est causé par le .NET Framework 3.5, donc je l'ai mis sur une machine où je n'ai pas installé .NET 3.5, mais le problème est toujours là!IIS6 + HttpModule: Cette opération nécessite le mode de pipeline intégré IIS

+0

Pourriez-vous préciser ce que votre module est en train de faire? – AnthonyWJones

+0

vérifiez si le mot de passe de l'utilisateur est expiré puis forcez-le à le changer. – sdhjl2000

+0

Vous devez fournir le code indiquant où l'erreur se produit. –

Répondre

7

Seul IIS7 prend en charge le pipeline intégré. Sur IIS7, un module HttpModule peut participer à toutes les demandes arrivant sur le serveur Web, pas uniquement celles qui ciblent des extensions de fichier spécifiques. II6 utilise ce que IIS7 appelle le pipeline classique où un module HttpModules ne peut être impliqué que lorsque le pipeline ISAPI antérieur détermine que le mappage de script nécessite que la requête soit transmise à ASP.NET.

39

Ma tentative de débogage psychique: vous utilisez une déclaration comme:

Response.Headers("X-Foo") = "bar" 

Si tel est le cas, la modification de ce comme indiqué ci-dessous va contourner le problème:

Response.AddHeader("X-Foo", "bar") 
+0

Est-ce que 'response.Headers.Location = new Uri (...);' casse IIS6 et donne 500 'Internal Server Error'? – Blaise

6

Je suis juste tombé sur ce problème. En utilisant IIS6 et .NET 3.5. Correction pour moi était d'utiliser Response.AddHeader au lieu de Response.Headers.Add. HTH.

0

Inspiré par d'autres réponses, j'ai trouvé qu'il est l'accès au Response.Headersobjet qui provoque l'exception « opération nécessite IIS intégré en mode pipeline ».

Évitez .Headers et appeler d'autres fonctions d'aide (anciens?) Comme: (! Dans mon cas)

  • Response.AddHeader() et
  • Response.ClearHeaders()
Questions connexes