2012-03-27 8 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

答えて

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ページを試してもらったことがありますか?クエリ文字列内の情報を渡すことはできますか?

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