2011-12-21 7 views
3

私はASP.NETアプリケーション内のサーバー上にイメージをホストしています。 イメージのサイズを変更し、DBの "image_view_count"をインクリメントするカスタムHTTPハンドラを作成しました。.NET httpハンドラ内のURLを取得するにはどうすればよいですか?

ここでは、画像がどこで使用されているかを知るためにいくつかのログを行いたいと思います。例:

画像abc.jpgは、私のサーバーのwww.myserver.com/stuff/abc.jpgにあります。 誰かがフォーラムの投稿(www.forum.com/thread.php)にリンクして使用していますか? id = 1234

httpハンドラでwww.forum.com/thread.php?id=1234のURLを取得したいと考えています。前の例でRequest.Url.ToString()を使用すると、www.myserver.com/stuff/abc.jpgが届きます。

どうすればよいですか?マネージコードに相当するlocation.hrefはありますか?

+0

あなたはリフェラーを試しましたか? –

答えて

3

I あなたはRefererヘッダーを探しています。

public void ProcessRequest(HttpContext context) 
{ 
    IServiceProvider provider = (IServiceProvider)context; 
    HttpWorkerRequest worker = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest)); 
    String referer = worker.GetKnownRequestHeader(HttpWorkerRequest.HeaderReferer); 
} 
+0

パーフェクト。それは私がそれを必要とする正確に動作します。ありがとうございました。 – Akarin

1

Request.Urlは、現在のリクエスト(つまり、画像を読み込むリクエスト)のURLです。

あなたはRefererをチェックすることで、あなたが望むものを手に入れることができるかもしれませんが、これは必ずしも信頼できるものではありません。

0

あなたは画像が使用されている場所を確認するためにリファラを確認することができますブラウザがリクエストヘッダにリファラを送信していない場合 http://en.wikipedia.org/wiki/HTTP_referrer

をC#

string referer = Request.UrlReferrer.ToString(); 

UrlReferrerはnullにすることができます。

関連する問題