統合モードで 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) 外部サイトのページで参照された画像に透かしが入ります。アーメン。
ありがとう、ジョン