2012-03-27 66 views
0

我們爲圖像(jpg)創建了一個唯一命名的請求,我們需要重定向並收集其請求的名稱。我們在Global.asax中嘗試這樣做,它在Dev中很好用,但在生產中它似乎不會啓動。圖像重定向和日誌記錄

它必須是一個圖像(請求以JPG結尾)或我們之間的一些處理器,客戶端將剝離請求。這運行在一個虛擬目錄中,除了這些圖像請求外,其他的功能都很少。 MVC不是一種選擇。

Ex. request = domain/Copyright_123456789.jpg 
    response = domain/images/Copyright.jpg 
    collect = 123456789 and place in database 

代碼

void Application_BeginRequest(object sender, EventArgs e) 
    { 
     if (Request.AppRelativeCurrentExecutionFilePath.Contains("Copyright_") && Request.AppRelativeCurrentExecutionFilePath.Contains(".jpg")) 
     { 
      int ADFID = 0; 
      string[] ImageNameArray = Request.AppRelativeCurrentExecutionFilePath.Split(new char[] { '_', '.' }); 
      if (int.TryParse(ImageNameArray[1], out ADFID)) 
      { 
       QueriesTableAdapter SaveView = new QueriesTableAdapter(); 
       SaveView.FirstQuote_Operations_ClientLeadEmailViews_Save(ADFID); 
      } 
      HttpContext.Current.RewritePath("~/images/Copyright.jpg"); 
     } 
    } 

任何幫助將不勝感激,謝謝。

+0

那麼你試圖解決什麼是潛在的問題? – RQDQ 2012-03-27 15:29:15

回答

1

這是我如何完成這一點。圖像SRC =「網站/虛擬目錄/ Copyright_12345.jpg」 12345是我們收集到的價值,我們對我們的網站

的web.config

<httpHandlers> 
    <remove verb="*" path="*.jpg"/> 
    <add verb="*" path="*.jpg" type="Tracker.TrackerClass" validate="false"/> 
</httpHandlers> 

跟蹤器類與真正的JPG迴應

public class TrackerClass : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     int ADFID = 0; 
     string[] ImageNameArray = context.Request.AppRelativeCurrentExecutionFilePath.Split(new char[] { '_', '.' }); 
     if (int.TryParse(ImageNameArray[1], out ADFID)) 
     { 
      **store to database*** 
     } 

     context.Response.ContentType = "image/jpg"; 
     context.Response.WriteFile("images/Copyright.jpg"); 
    } 
    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

這是網站上唯一的類。在IIS中爲此創建一個虛擬目錄。
一旦創建,就得到屬性,虛擬目錄,配置,映射。在應用程序擴展名下點擊添加。輸入.jgp,您的.NET版本isapii(從大多數窗口中的任何其他擴展名複製它),並將動詞設置爲全部。請確保在底部檢查驗證文件。

這應該做到這一點。

0

這似乎是一個奇怪的方式去事情....我會建議使用ASP.NET MVC,因爲它具有很好的靈活性繞路由....檢查每一個請求似乎不是很好。

0

您是否試過creating a handler頁面並將其視爲jpg?你能夠傳遞查詢字符串中的任何信息嗎?

public void ProcessRequest (HttpContext context) 
{ 
    if (context.Request.QueryString["copyright"] == "y") 
    {  
     context.Response.ContentType = "image/jpg"; 
     context.Response.WriteFile("~/Flower1.jpg"); 
    } 
}