2012-06-13 3 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 тега:

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 ot появляются на prod. спасибо за вашу помощь

+1

Good Lord! Это настоящий маршрут? У вас там шесть разрезов! – gdoron

+0

какой ответ вы получаете? ошибка? –

ответ

0

Если URL-адреса выглядят отлично на производственной версии - возможно, проблема связана не с маршрутизацией, а с кодом в методе действий.

Вы проверили, какой ответ вы получаете от браузера при попадании на производственный 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

, но я не сохраняю миниатюры, исключение произошло в строке 62 в методе ExecuteResult ThumbnailActionResult, а строка 62 - targetBmp.Save (context.HttpContext.Response.OutputStream, ImageFormat.Png); и действие, которое вызывается, возвращает ThumbnailActionResult (ответ). поэтому я не сохраняю изображения вообще – user217648

0

Никогда не указывайте URL-адрес жесткого кода, как и вы. Всегда используйте помощники URL. Дело в том, что при развертывании приложения в 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 

Поскольку вы жёстко URL, вы получите 404.

Так используйте метод RouteUrl для его генерации, который будет принимать учитывайте этот виртуальный каталог, если он есть. Не используйте форматирование строк для создания URL-адресов:

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 будет немедленно возвращено, даже не достигнув вашего действия. –

Смежные вопросы