2014-11-04 104 views
0

我正在升級舊的WebForms應用程序。但是,它並沒有選擇自定義主題。HttpModules設置被忽略?

我的web.config文件中包含以下內容:

<system.web> 
    <httpModules> 
    <add name="ThemeManager" type="SoftCircuits.MediCorp.ThemeManager"/> 
    </httpModules> 
</system.web> 

而這裏的類定義的一部分:

public class ThemeManager : IHttpModule 
{ 
    const string _defaultTheme = "BlueSky"; 

    public ThemeManager() 
    { 
    } 

    public void Init(HttpApplication app) 
    { 
     app.PreRequestHandlerExecute += new EventHandler(Context_PreRequestHandlerExecute); 
    } 

    void Context_PreRequestHandlerExecute(object sender, EventArgs e) 
    { 
     if (HttpContext.Current.CurrentHandler is Page && HttpContext.Current.Session != null) 
     { 
      Page page = (Page)HttpContext.Current.CurrentHandler; 

      // Note: To override the theme set here, set Theme = null in page's PreInit event 
      if (page != null && !HttpContext.Current.Request.FilePath.Contains("Help/")) 
      { 
      ... 

但現在看來,這個類永遠不會實例。我可以在構造函數,Init()處理程序或PreRequestHandlerExecute()處理函數中設置斷點,並且不會觸發這些斷點。

這一次工作。任何人都可以看到缺少什麼?

注意:我不知道它是否有所作爲,但我也在我的web.config文件中指定了<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" />

回答

0

原來web.config語法已經改變爲IIS 7.0集成模式(無論集成模式意味着什麼)。

而不是我的問題中的配置,它需要按如下方式完成。

<system.webServer> 
    <modules> 
    <add name="ThemeManager" type="SoftCircuits.MediCorp.ThemeManager"/> 
    </modules> 
</system.webServer> 

爲我修好了。

http://msdn.microsoft.com/en-us/library/vstudio/ms227673(v=vs.100).aspx