Проблема с ASP.net 4.0 default.aspx на IIS6

Я установил .net framework 4 на свой windows 2003 enterprise x64, написал простое приложение asp.net 4.0 (только страница default.aspx). Приложение отлично работает, если запрос направлен на default.aspx, а не на корневой сайт:

contoso.com/ - не работает (ошибка 404)

contoso.com/default.aspx - работает.

Default.aspx находится в списке документов по умолчанию в IIS. Пожалуйста помоги.


person Dimonina    schedule 14.04.2010    source источник


Ответы (7)


Обнаружено исправление в, казалось бы, несвязанном месте - попробуйте установить для параметра реестра EnableExtensionlessUrls значение 0:

Критические изменения в ASP.NET 4 -> Приложения ASP.NET 2.0 могут создавать ошибки HttpException, ссылающиеся на eurl.axd:

В реестре Windows откройте следующий узел: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 4.0.30319.0

  1. Создайте новое значение DWORD с именем EnableExtensionlessUrls.
  2. Установите для EnableExtensionlessUrls значение 0. Это включает поведение URL-адреса без расширения.
  3. Сохраните значение реестра и закройте редактор реестра.
  4. Запустите программу командной строки iisreset, которая заставит IIS прочитать новое значение реестра.
person Will WM    schedule 15.06.2010
comment
Как и все, кто сталкивается с этой проблемой, мы обнаружили, что установка исправления для этой проблемы stackoverflow.com/questions/3720720 / стерли этот ключ рег, который воссоздал эту проблему. После повторного применения этого исправления документы по умолчанию снова работали правильно. - person John Hann; 30.09.2010
comment
работал у меня на WIN2003 SP2 / IIS 6 / .NET 4. Дополнительная статья в блоге MSDN по этой проблеме здесь: Как отключить ASP.NET v4.0 Extensionless Функция URL в IIS 6.0 - person MikeM; 23.03.2011

Вы найдете ответ здесь http://johan.driessen.se/archive/2010/04/13/getting-an-asp.net-4-application-to-work-on-iis6.aspx

.Net 4.0 не позволяет работать с IIS, поэтому вам нужно запустить команду (находясь в папке c: \ windows \ system32): cscript iisext.vbs / EnFile C: \ WINDOWS \ Microsoft.NET \ Framework \ v4 .0.30319 \ aspnet_isapi.dll или в вашем случае, так как вы используете x64

cscript iisext.vbs / EnFile C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll

person Jonatan B    schedule 15.04.2010
comment
Расширение isapi .net 4.0 включено. Сайт работает нормально. Все еще нет ответа - person Dimonina; 15.04.2010
comment
Запустите cscript iisext.vbs / EnFile C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll, а затем перезапустите IIS. - person HasanG; 28.04.2010

Измените версию ASp.Net с 4.0 на 2.0 и примените ее. и вернуться к версии Asp.Net до 4.0. Это решит проблему.

person Prakash Pengoria    schedule 19.08.2015

По-видимому, у меня недостаточно моментов для комментариев, но я хотел сказать, что решение от Will WM сработало для меня. Добавление EnableExtensionlessUrls в реестр устранило проблему.

В качестве примечания: если вы запустите aspnet_regiis в любое время, он удалит это значение, и вам нужно будет добавить его снова.

person Jarrod    schedule 12.10.2010

Я использую следующее регулярное выражение в качестве первого правила с Ionics Isapi Rewriter для веб-сайтов, работающих на ASP.NET 4 на IIS 6 для устранения проблем, вызванных критическое изменение, представленное в ASP.NET 4:

RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2

Это позволило мне снова использовать URL-адреса без расширений.

Обратите внимание, что вторая группа захватывает строку запроса, если она есть, и заменяет ее на перезаписанный URL.

И да, это функция, а не ошибка.

person marapet    schedule 10.02.2011

Вы уверены, что это default.aspx, а не default.asp в списке документов по умолчанию?

person David M    schedule 14.04.2010
comment
абсолютно. Первый номер в списке - person Dimonina; 14.04.2010
comment
Вы добавили это сами или уже было? Есть ли шанс, что это опечатка? - person David M; 14.04.2010

Вы также получите эту ошибку в виртуальных каталогах ASP.NET 2.0 в IIS6, если у вас есть другой виртуальный каталог на том же сайте, для которого установлено значение 4.0, а DefaultWebSite настроен на использование ASP.NET 4.0.

Решение состоит в том, чтобы снова изменить DefaultWebSite на ASP.NET 2.0. Ваш виртуальный каталог 4.0 по-прежнему будет работать под этим веб-сайтом.

person Ben Anderson    schedule 12.08.2011