Проблема ASP.net 4.0 default.aspx на IIS6
Я установил .net framework 4 на моем Windows 2003 Enterprise x64, написал простое приложение asp.net 4.0 (только по умолчанию .aspx). Приложение отлично работает, если запрос имеет значение default.aspx, а не на корневой сайт:
contoso.com/- не работает (получите ошибку 404)
contoso.com/default.aspx - работает.
Default.aspx находится в списке документов по умолчанию в IIS.
Пожалуйста, помогите.
Ответы
Ответ 1
Найденное исправление в кажущемся несвязанном месте - попробуйте установить раздел реестра "EnableExtensionlessUrls" в 0:
ASP.NET 4 Breaking Changes → Приложения ASP.NET 2.0 могут генерировать ошибки HttpException, ссылающиеся на eurl.axd:
В реестре Windows откройте следующий node:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0
- Создайте новое значение DWORD с именем EnableExtensionlessUrls.
- Установите EnableExtensionlessUrls равным 0. Это позволяет использовать поведение URL без продолжения.
- Сохраните значение реестра и закройте редактор реестра.
- Запустите средство командной строки iisreset, которое заставляет IIS читать новое значение реестра.
Ответ 2
Здесь вы найдете ответ
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
Ответ 3
Измените версию ASp.Net с 4.0 на 2.0 и примените ее. и верните обратно версию Asp.Net версии 4.0. Это решит проблему.
Ответ 4
У меня недостаточно очков для комментариев, но я хотел сказать, что решение от Will WM помогло мне. Добавление EnableExtensionlessUrls в реестр исправило проблему.
В качестве побочного примечания, если вы запустите aspnet_regiis в любое время, он удалит это значение, и вам нужно будет добавить его снова.
Ответ 5
Я использую следующее регулярное выражение как правило first с помощью Ionics Isapi Rewriter для веб-сайтов, работающих на ASP.NET 4 на IIS 6, для устранения проблем, вызванных нарушение изменений, представленное в ASP.NET 4:
RewriteRule ^(.*)/eurl.axd/[a-f0-9]{32}(.*)$ $1$2
Это позволяет мне снова использовать неограниченные URL-адреса.
Обратите внимание, что вторая группа фиксирует запрос, если он присутствует, и заменяет его на перезаписанный URL.
И да, это функция, а не ошибка.
Ответ 6
Вы уверены, что default_aspx не default.asp в списке документов по умолчанию?
Ответ 7
Вы также получите эту ошибку в виртуальных каталогах ASP.NET 2.0 в IIS6, если у вас есть другой виртуальный каталог на том же сайте, который установлен в 4.0, а DefaultWebSite настроен на использование ASP.NET 4.0.
Решение состоит в том, чтобы изменить DefaultWebSite обратно на ASP.NET 2.0. Ваш виртуальный каталог 4.0 все равно будет работать под этим веб-сайтом.