2012-10-18 93 views
1

我有一個asp.net網站,我需要使用URL重寫,所以我寫了一個HTTP模塊,我已經實現了它,它能正常工作,唯一的問題是當頁面重定向到它相應地址的圖像和樣式未加載。URL Rewrite ASP.net

這裏是http模塊:

//您的BeginRequest事件處理程序。

private void Application_BeginRequest(Object source, EventArgs e) 
{ 
    HttpApplication application = (HttpApplication)source; 
    string URL = application.Request.Url.ToString(); 
    //int pid = Convert.ToInt32(application.Request.QueryString["pid"]); 

    if ((URL.ToLower().Contains(".aspx")) 
     || (URL.ToLower().Contains(".js")) 
     || (URL.ToLower().Contains(".css")) 
     || (URL.ToLower().Contains(".gif")) 
     || (URL.ToLower().Contains(".png")) 
     || (URL.ToLower().Contains(".jpeg")) 
     || (URL.ToLower().Contains(".jpe")) 
     || (URL.ToLower().Contains(".jpg")) 
     || (URL.ToLower().Contains(".ashx"))) 
     return; 
    else 
    { 
     string mname = URL.Substring(URL.LastIndexOf("/") + 1).ToString(); 

     Merchand ms = merchantDB.GetMerchant(mname); 

     HttpContext context = application.Context; 
     if (ms != null) 
     { 

      string url = "~/pages/Merchant.aspx?mid=" + ms.MerchandID + "&catid=" + ms.MainCategory + "&subcatid=0"; 
      context.RewritePath(VirtualPathUtility.ToAppRelative(url)); 
     } 
     else 
     { 
      //(""); 
      string url = "~/pages/default.aspx"; 
      context.RewritePath(VirtualPathUtility.ToAppRelative(url)); 
     } 
    } 

} 

當我打開它的頁面正常的URL它打開罰款,但是當我使用URL重寫它打開,但與圖像或樣式。

當我打開Firebug我得到的CSS和JavaScript都沒有找到

回答

1

爲了與IIS重寫工作錯誤,請執行下列操作:

  1. 註冊的HttpModule在web.config中的在system.webserver標籤:
<modules> 
<add name="Rewrite" type="Rewrite"/> 
</modules> 
  1. 更改此:context.RewritePath(VirtualPathUtility.ToAppRelative(url));對此:context.RewritePath(url,false);
  2. 使您的圖像runat服務器,並把他們的路徑爲〜/ images/imagename