2013-03-24 1 views
1

У меня есть файл SVG в качестве моих активов и в routeconfig, я упомянул ниже кодASP.Net IgnoreRoutes Не работает

routes.IgnoreRoute("{*svg}", new { svg = @"(.*/)?.svg(/.*)?" }); 

Это, кажется, работает нормально с Кассини (Visual Studio 2012 Buit в Сервер развертывания), но когда я развожу его на Azure, я получаю 404.

Является ли мое заявление IgnoreRoute правильным? или любые другие решения? все остальные изображения, таблицы стилей, похоже, работают нормально.

Большое спасибо.

ответ

1

Вам никогда не придется игнорировать маршруты для файлов, которые физически существуют на диске, модуль маршрутизации не будет пытаться маршрутизировать эти запросы. Вам нужно только игнорировать маршруты для других виртуальных ресурсов.

Веб-сайты Azure не имеют тип mime, настроенный для файлов .svg, по крайней мере, в конце прошлого года они этого не сделали. Вы можете настроить тип пантомимы для SVG в <system.webserver> разделе вашего файла web.config:

<staticContent> 
    <remove fileExtension=".svg"/>  
    <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/> 
</staticContent> 

Средство удаления есть, чтобы избежать ошибок на серверах, которые уже имеют запись для .SVG. Ошибка добавления дубликата fileExtension, но не ошибка для удаления несуществующего расширения.

Подробнее: Configuration Tips For ASP.NET MVC 4 on a Windows Azure Website

0

Глядя на Phil's Blog Я думаю, что вам нужно, это что-то вроде:

routes.IgnoreRoute("{*allsvg}", new {[email protected]".*\.svg(/.*)?"}); 

Надежда, что помогает.

0

Какой заказ вы объявляете о маршрутах? Это может быть так, что выше того, у вас есть default или catch-all маршрут, который на самом деле уже обрабатывает запрос, и поэтому ваш IgnoreRoute никогда не попадает.

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