2013-02-20 14 views
1

У меня есть простая карта маршрута, как:Пути ASP.NET MVC с параметром "." не работает в лазури

routes.MapRoute("Test", "test/{action}/{id}", new {controller = "Test", action = "Index", id = ""}); 

Мой маршрут путь, как:

"/test/do-something/1.0.1" 

Который работает полностью штраф в локальном тестировании и самодостаточен .NET 4.5 на IIS7 +

Однако, когда я размещаю его в Azure, у него, похоже, есть проблемы с идентификатором, содержащим два «.», Сообщая мне, что «Ресурс, который вы ищете, был удален, изменилось его имя или временно отключено Lable. «
Если изменить путь к "/test/do-something/1" он работает на Azure, а также.

Почему Azure, кажется, запрещает идентификаторы с».», И что я могу поделать?

+0

Это, скорее всего, проблема с каркасом MVC, а не с самой Azure. Существует аналогичная проблема, описанная здесь http://stackoverflow.com/q/9273987/1916110 – Tom

ответ

0

Я бы рекомендовал использовать '-' в вашем id, а не в '.' (периоды), это более дружественным с точки зрения SEO.

Если вы действительно хотите, чтобы он работал с периодами, вы можете использовать инструмент под названием URLScan.

What is URLScan?

Существует вариант для настройки:

AllowDotInPath = 0

По умолчанию эта опция установлена ​​в 0. Если этот параметр установлен в 0, URLScan отклоняет любой запрос, содержащий несколько периодов (.). Этот предотвращает попытки маскировки запросов на опасное имя файла расширений путем размещения расширения безопасного имени файла в пути информации или части строки запроса URL-адреса. Например, если это вариант ...

Here является ссылка на конфигурацию.

+0

Это отлично работает на локальном компьютере, а также на самообслуживаемом сервере IIS - единственная проблема на Azure – TJF

+0

Как настраивается ваш сайт на Лазуре? на виртуальной машине или веб-сайте? –

+0

это лазурный сайт – TJF

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