j'ai simple IHttpModule
:Comment enregistrer un HttpModule compatible avec VS2012 Cassini et IIS7?
using System;
using System.Web;
namespace DummyPlaceholder
{
class PerformanceHttpModule : IHttpModule
{
public void Init(HttpApplication application)
{
}
public void Dispose()
{
}
}
}
Et vous inscrire HttpModules intérieur web.config
:
<configuration>
<system.web>
<httpModules>
<add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
</httpModules>
</system.web>
</configuration>
Quand je développais, et de tester localement dans mon Visual Studio 2012 intégré ("Cassini") serveur web, tout a bien fonctionné.
Quand il est venu le temps de déployer sur un live serveur web IIS7, le serveur give a 500 Internal Server Error, and absolutely no information about the cause anywhere.
Le problème est que IIS7 changé la façon dont vous vous inscrivez HttpModules, vous n'utilisez plus system.web
, au contraire, vous devez maintenant utiliser system.webServer
:
<configuration>
<system.webServer>
<modules>
<add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
</modules>
</system.webServer>
</configuration>
Et maintenant qui fonctionne sur IIS, mais ne fonctionne pas à l'intérieur de Visual studio 2012.
ce que j'ai besoin est une solution Cela fonctionne dans les deux, sans avoir à modifier le fichier web.config
lors de sa publication.
Le problème est que IIS7 et plus récente, ont une nouvelle "intégré" mode. Le mode alternatif est le comportement que IIS6 avait, appelé "Classic" mode.
Il est évident que je dois mettre le Visual Studio intégré serveur web en mode "intégré", afin qu'il regarde:
configuration/webServer/modules
pour les modules.
Comment faire cela?
Bonus lecture
- "500 Internal Server Error" when adding HttpModule in my Website?
- Not understanding IIS Classic and Integrated Mode?
- Debugging with VS 2010 in IIS 7 classic pipeline
- HTTP handlers in IIS6 or IIS7 classic mode