2008-11-21 96 views
1

我對IIS 7.0的URL重寫有一個大問題。重寫路徑和IIS集成模式

我寫了一個簡單的模塊來重寫我的NET3.5/IIS7 Web應用程序。這是代碼的一部分。

public void Init(HttpApplication context) 
    { 
     context.BeginRequest += new EventHandler(context_BeginRequest); 
    } 

    void context_BeginRequest(object sender, EventArgs e) 
    { 
     HttpApplication app = sender as HttpApplication; 
     if (app.Request.Path.Contains("pagetorewrite.aspx")) 
      HttpContext.Current.RewritePath("~/otherpage.aspx"); 
    } 

而且註冊我的模塊中的web.config:

<system.webServer> 
<validation validateIntegratedModeConfiguration="false"/> 
<modules> 
       <add name="MyModule" type="MyModule" preCondition="" /> 

在使用傳統的ASP管道它的作品完美的,但是當我改變管道模式到綜合,然後停止IIS 7.0(Vista的)加工。調試器/事件/日誌文件中沒有例外,錯誤和任何內容 - 只有瀏覽器中沒有找到頁面的消息。最棘手的情況是頁面名稱看起來像是從原始頁面的部分和rewrte到頁面拼寫錯誤或合併。

我已經在另一臺計算機上部署了我的代碼(也是vista-x64-和iis 7.0),並且它在兩種模式下都很完美。 它看起來有一個配置問題或什麼?

回答

0

只是一個猜測:資格與程序集的名稱(類型=「MyModule的,MyAssembly程序」)的類型