1

統合モードで iis7 で ImageResizer を実行しています。Application_Start でこのコードを使用して不要なオーバーヘッドを導入していないことを確認したいだけです。ここでの目的は、リクエストが私のドメイン内からのものではない場合 (たとえば、ホットリンクされたファイル、Googlebot、Pinterest など) に、特定の画像 (フォルダー ベース、次にサイズ ベース) に透かしを入れることです。

  Config.Current.Pipeline.Rewrite += delegate(IHttpModule mysender, HttpContext context, IUrlEventArgs ev)
  {
     if (context.Request.UrlReferrer.Host != "www.mydomain.com")
     {
        //Check folder
        string folder1 = VirtualPathUtility.ToAbsolute("~/images/products");
        string folder2 = VirtualPathUtility.ToAbsolute("~/images/product-showcase");
        string folder3 = VirtualPathUtility.ToAbsolute("~/images/frills");
        if (ev.VirtualPath.StartsWith(folder1, StringComparison.OrdinalIgnoreCase) || ev.VirtualPath.StartsWith(folder2, StringComparison.OrdinalIgnoreCase) || ev.VirtualPath.StartsWith(folder3, StringComparison.OrdinalIgnoreCase))
        {
           //Estimate final image size, based on the original image being 300x300. 
           System.Drawing.Size estimatedSize = ImageBuilder.Current.GetFinalSize(new System.Drawing.Size(300, 300),
                           new ResizeSettings(ev.QueryString));
           if (estimatedSize.Width > 100 || estimatedSize.Height > 100)
           {
              //It's over 100px, apply watermark
              ev.QueryString["watermark"] = "watermarkname";
           }
        }
     }
  };

編集/解決策: 作業コードの場合、3 行目は次のようになります。

     if (context.Request.UrlReferrer == null || (context.Request.UrlReferrer != null && context.Request.UrlReferrer.Host != "www.mydomain.com"))

これにより、1) 直接アクセスされた、または 2) 外部サイトのページで参照された画像に透かしが入ります。アーメン。

ありがとう、ジョン

4

1 に答える 1