2010-04-14 3 views
11

Я установил .net framework 4 на моем Windows 2003 Enterprise x64, написал простое приложение asp.net 4.0 (только по умолчанию .aspx). Приложение отлично работает, если запрос на Default.aspx, а не к месту корня:ASP.net 4.0 default.aspx проблема на IIS6

contoso.com/ - не работает (Получить сообщение об ошибке 404)

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

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

+1

Добавить что и где? – Dimonina

ответ

0

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

+0

совершенно. Первое число в списке – Dimonina

+0

Вы добавили его сами или уже были там? Есть ли шанс, что это может быть опечатка? –

+0

Он уже был установлен – Dimonina

4

Вы найдете ответ здесь 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

+0

.net включено расширение isapi 4.0. Сайт работает отлично. Все еще нет ответа – Dimonina

+1

Запустите cscript iisext.vbs/EnFile C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll, а затем перезапустите IIS –

+0

@Dimonina: Это работало? – Amitabh

20

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

ASP.NET 4 Breaking Changes -> ASP.NET 2.0 Applications Might Generate HttpException Errors that Reference eurl.axd:

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

  1. Создайте новое значение DWORD с именем EnableExtensionlessUrls.
  2. Установите EnableExtensionlessUrls равным 0. Это позволяет использовать поведение URL без продолжения.
  3. Сохраните значение реестра и закройте редактор реестра.
  4. Запустите средство командной строки iisreset, которое заставляет IIS читать новое значение реестра.
+0

не работает для меня :-( – Dimonina

+0

Это сработало для меня! –

+0

Так же, как голова для всех, кто сталкивается с этой проблемой, мы обнаружили, что установка исправления для этой проблемы http : //stackoverflow.com/questions/3720720/how-serious-is-this-new-asp-net-security-vulnerability-and-how-can-i-workaround-i удалил этот ключ реестра, который заново создал это После того, как мы повторно применили это исправление, документы по умолчанию снова работали правильно –

1

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

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

1

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

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

Это позволило мне снова использовать ссылки без расширения.

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

И да, это a feature, not a bug.

+0

это сработало для меня –

0

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

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

2

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