2013-01-17 81 views
3

我一直在我們的網絡應用中使用ImageResizer.net,但現在我需要它來調整圖像大小,並提供不具有文件擴展名的圖像,如下所示:ImageResizer和沒有擴展名的圖像文件

http://localhost:58306/ClientImages/Batch/2012/12/10/f45198b7c452466684a4079de8d5f85f?width=600 

在這種情況下,我知道我的文件總是TIFF的,但他們沒有文件擴展名。

我有什麼選擇?

/resizer.debug.ashx:https://gist.github.com/raw/9c867823c983f0e5be10/4db31cb21af8b9b36f0aa4e765f6f459ba4b309f/gistfile1.txt

更新

我跟着電腦語言學家的指示:

protected void Application_Start() 
    { 
     Config.Current.Pipeline.PostAuthorizeRequestStart += 
      delegate 
       { 
        var path = Config.Current.Pipeline.PreRewritePath; 
        var clientImgsRelPath = PathUtils.ResolveAppRelative("~/ClientImages/"); 
        var isClientImageRequest = path.StartsWith(clientImgsRelPath, StringComparison.OrdinalIgnoreCase); 

        if (isClientImageRequest) 
         Config.Current.Pipeline.SkipFileTypeCheck = true; 
       }; 


       // other app start code here 
    } 

http://localhost:58306/ClientImages/Batch/2012/12/10/92d67b45584144beb5f791aaaf760252?width=600只是沒有調整原始圖像大小響應。

這也被問及在這裏:http://imageresizing.net/docs/howto/cache-non-images#comment-571615564

這是無論你怎麼稱呼它與卡西尼開發或Visual Studio Web服務器或期間發生。

回答

2

首先,您必須使用IIS7集成模式。經典模式將不起作用;它不允許ASP.NET訪問無延伸請求

除非您明確告知,否則ImageResizer無法知道無擴展名的URL是圖片。

本文檔介紹:

http://imageresizing.net/docs/howto/cache-non-images

從本質上講,你最終會執行您的網址邏輯(通常String.StartsWith),以找出是否ImageResizer應該將文件作爲圖像。

Config.Current.Pipeline.PostAuthorizeRequestStart += delegate(IHttpModule sender, HttpContext context) { 
    string path = Config.Current.Pipeline.PreRewritePath; 

    //Skip the file extension check for everything in this folder: 
    if (path.StartsWith(PathUtils.ResolveAppRelative("~/folder/of/images"), 
     StringComparison.OrdinalIgnoreCase)){ 

     Config.Current.Pipeline.SkipFileTypeCheck = true; 
    } 
}; 

您應該在Global.asax中的Application_Start中註冊此事件處理程序。

+0

謝謝,但你能看到我的更新嗎? –

+1

您是否試過指定'&process = always'來強制處理作爲圖像? –