UrlMapping, дающий страницу 404, не найденную в IIS, но нормально работающую на локальном порту сервера

Что ж, у меня возникла проблема, когда я разместил свой веб-сайт .NET 2.0 в IIS 6. Я использовал UrlMapping для перенаправления некоторых старых URL-адресов. Он работает нормально, когда я использую его на локальном порту сервера VS, но когда я развертываю его в IIS 6, он выдает ошибку 404 Page not found.

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

Заранее спасибо, на здоровье :)


person Suraj    schedule 19.01.2010    source источник


Ответы (3)


Взломайте IIS на целевом сервере.

Перейдите в свое веб-приложение, щелкните правой кнопкой мыши и выберите Свойства.

Выберите вкладку Виртуальный каталог.

Нажмите кнопку Конфигурация в разделе Настройки приложения.

В разделе Подстановочные карты приложений добавьте следующее:

c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

Убедитесь, что вы сняли флажок «Файл существует».

person hunter    schedule 19.01.2010
comment
Я пробовал с этим, но это не сработает. Есть идеи? проверьте здесь: stackoverflow.com/questions/19904849/ - person SHEKHAR SHETE; 11.11.2013

Что, вероятно, вызывает вашу проблему, так это то, что в сопоставлении ASP.NET в IIS есть флажок «проверить, что файл существует», снимите этот флажок, и все будет в порядке.

Никакого реального риска при редактировании этого.

http://forums.asp.net/p/890825/1017645.aspx

http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

Откройте свойства на своем веб-сайте, перейдите на вкладку «Домашний каталог» и нажмите «Конфигурация».

Затем найдите сопоставление .NET или создайте сопоставление с подстановочными знаками... и убедитесь, что опция «проверить наличие файла» не отмечена.

person Clarence Klopfstein    schedule 19.01.2010

Я считаю, что это происходит из-за того, что IIS6 не может передавать запросы в ASP.NET, когда ваши URL-адреса не имеют расширений (например, .aspx). В следующем примере настройки

<add url="~/NewUrl" mappedUrl="~/Default.aspx?UrlId=12345" />

вы получите 404 при попытке доступа к http://yousite.name/NewUrl в IIS6. Вот сообщение в блоге Фила Хаака о том, как преодолеть это с помощью сопоставления с подстановочными знаками: http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

P.S. Я знаю, что пост посвящен ASP.NET MVC, но я думаю, что это может помочь и в вашем сценарии.

person Igor Korkhov    schedule 19.01.2010