2012-06-13 60 views
1

工作,我已經創建了以下路線路由沒有在生產環境

routes.MapRoute("ThumbnailRoute",// Route name 
      "Image/{action}/{session}/{parentId}/{fileName}/{ctype}/{thumbNailSize}", // URL with parameters 
      new { controller = "Image", action = "GenerateThumbnail", session = "", parentId = "", fileName = "", ctype = "", thumbNailSize = 70 }, // Parameter defaults 
      new { controller = @"[^\.]*", action = @"[^\.]*" }); 

和我的擴展方法返回一個字符串,像下面這將是img標籤的src屬性:

return string.Format("/{0}/{1}/{2}/{3}/{4}/{5}/{6}", controller, action, session, parentId, fileName, ctype, thumbNailSize); 

當我右鍵單擊頁面併爲dev和prod環境選擇屬性時,src av img標記是相同的(http:// localhost/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e。 jpg/jpeg/70)唯一不同的是域名(localhost,www.domain.com),但圖像de n不出現在產品上。感謝您的幫助

+1

好主!這是一條真正的路線嗎?你在那邊有六個斜線! – gdoron

+0

你會得到什麼迴應?錯誤? –

回答

0

如果URL在生產版本上看起來不錯 - 可能問題不在於路由,而在於操作方法中的代碼。

您是否檢查了在點擊生產網址時從瀏覽器得到的回覆?

當您瀏覽到http://www.domain.com/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e.jpg/jpeg/70時,您會得到什麼回覆?

+0

當我瀏覽圖像時,它會生成錯誤:GDI +中發生了一般性錯誤。 System.Drawing.Image.Save(流數據流,ImageCodecInfo編碼器,EncoderParameters encoderParams)+439618 System.Drawing.Image.Save(流數據流,ImageFormat格式)+36 ..... – user217648

+0

所以錯誤可能是沒有做路由,但是保存圖像時出錯。猜測,鑑於它在本地工作,但不在您的服務器上,錯誤在於保存圖像,這可能是一個權限問題。 – StanK

+0

但我不保存縮略圖,在ThumbnailActionResult的ExecuteResult方法的第62行出現異常,第62行是targetBmp.Save(context.HttpContext.Response.OutputStream,ImageFormat.Png);並且被調用的Action返回一個ThumbnailActionResult(響應)。所以我不保存圖像 – user217648

0

從不像您那樣硬編碼網址。始終使用網址助手。問題是,當你在IIS中部署應用程序時,有一個虛擬目錄名稱。所以,正確的URL是以下內容:

http://foo.com/MyAppName/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e.jpg/jpeg/70 

代替:

http://foo.com/Image/GenerateThumbnail/de-DE/121/0beac6da-7c09-4faf-ad4b-48326f9d337e.jpg/jpeg/70 

既然你硬編碼你會得到404

所以使用RouteUrl方法來生成它將於網址考慮到這個虛擬目錄,如果有的話。不要使用任何字符串格式來構建網址:

public ActionResult Index() 
{ 
    string url = Url.RouteUrl("ThumbnailRoute", new 
    { 
     action = "GenerateThumbnail", 
     controller = "Image", 
     session = session, 
     parentId = parentId, 
     fileName = fileName, 
     ctype = ctype, 
     thumbNailSize = thumbNailSize 
    }); 

    ... 
} 
+0

謝謝,我會測試它,並讓你知道結果 – user217648

+0

嗨,我改變了你說的,但仍然得到同樣的錯誤,我認爲這個問題是關於生命的東西該圖像,因爲我不保存它,但使用ActionResult來返回數據。 – user217648

+0

是的,您的控制器操作中可能存在一些錯誤,這些錯誤應該用於映像。例如,可能會拋出一些異常,並且您可能會返回404。至少通過我的代碼,將會調用此操作,而對於您的硬編碼,將不會立即返回404,甚至無法執行操作。 –