asp.net 4 Приложение веб-формы с настраиваемым URL-адресом не работает в IIS 8

У нас было несколько веб-сайтов веб-форм ASP.NET 3.5 и ASP.NET 4 с Custom UrlRewrite, которые программно отображают URL-адреса, оптимизированные для SEO (http://example.com/key/This-is-sample-text-in-url.html) на физический адрес (http://example.com/key.aspx)

Эти веб-сайты отлично работали в IIS 6 с C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll для 3.5 и c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll для 4.0 в окно сопоставления расширения приложения.

после перехода на Windows 2012 все веб-сайты 3.5 работают с использованием классического .NET 3.5 AppPool и этого оператора в разделе обработчиков:

  <remove name="ASP.Net-ISAPI-Wildcard" />
  <add name="ASP.Net-ISAPI-Wildcard" path="*"
  verb="*" type="" modules="IsapiModule"
  scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll"
  resourceType="Unspecified"
  requireAccess="None"
  allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv2.0,bitness64"
  responseBufferLimit="4194304" />

Я ожидал, что будет использоваться тот же AppPool Classic .NET 4.0, и следующий обработчик должен работать, но не работает:

  <remove name="ASP.Net-ISAPI-Wildcard" />
  <add name="ASP.Net-ISAPI-Wildcard" path="*"
  verb="*" type="" modules="IsapiModule"
  scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
  resourceType="Unspecified"
  requireAccess="None"
  allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64"
  responseBufferLimit="4194304" />

Я по-прежнему получаю сообщение об ошибке HTTP 404.0 — Not Found
Модуль: IIS Web Core
Уведомление: MapRequestHandler
Обработчик: StaticFile
Код ошибки: 0x80070002

Я не могу понизить версию сайта и не нашел ничего полезного, чтобы найти источник ошибки. Файл журнала сайта не содержит никаких подробностей, ошибок в журналах событий нет.

Я подозревал, что может быть конфликт в сопоставлениях обработчиков, и пытался отключить нерелевантные или подозрительные записи через Web.Config, но никаких изменений не произошло. Я не знаю, но, возможно, ASP.Net-ISAPI-Wildcard не может перехватить запрос и, наконец, процесс заканчивается обработчиком StaticFile, хотя в упорядоченном списке ASP.Net-ISAPI-Wildcard находится сверху, а StaticFile — последний .

Я ценю, если у кого-нибудь есть решение для этого.

p.s. в приведенном выше примере целевая страница работает, т.е. URL-адрес (http://example.com/key.aspx )


person Reza Mortazavi    schedule 16.05.2017    source источник


Ответы (1)


Решено

Это на случай, если кто-то столкнется с такой же ситуацией

Обработчик, который я добавил, был правильным, но только для 64-битных приложений, поэтому, когда я добавил 32-битную версию обработчика, проблема была решена. Поскольку я установил любую платформу в диспетчере конфигурации, я не думал, что это может быть связано с платформой.

  <remove name="ASP.Net-ISAPI-Wildcard" />
  <add name="ASP.Net-ISAPI-Wildcard" path="*"
  verb="*" type="" modules="IsapiModule"
  scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
  resourceType="Unspecified"
  requireAccess="None"
  allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64"
  responseBufferLimit="4194304" />

  <remove name="ASP.Net-ISAPI-Wildcard-32" />
  <add name="ASP.Net-ISAPI-Wildcard-32" path="*"
  verb="*" type="" modules="IsapiModule"
  scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
  resourceType="Unspecified"
  requireAccess="None"
  allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness32"
  responseBufferLimit="4194304" />
person Reza Mortazavi    schedule 16.05.2017