Default.aspx с IIS 6.0 и .Net 4? - PullRequest
       42

Default.aspx с IIS 6.0 и .Net 4?

8 голосов
/ 12 мая 2010
  1. Мы развернули сайт .net 4 asp.net на IIS 6.0.
  2. Default.aspx настроен как один из документов по умолчанию.
  3. Когда мы заходим на сайт, используя следующий URL

http://testsite

Мы ожидаем, что это сделает

http://testsite/Default.aspx

Но вместо этого мы получаем 404 Not found error. У нас не было этой проблемы, когда она была развернута на .Net 2.0. Единственное, что изменилось на сервере, это то, что мы используем .NET 4 вместо .NET 2.0.

ОБНОВЛЕНИЕ : я попробовал следующую ссылку, но она не работала.

Получение приложения ASP.NET 4 для работы на IIS6

Версия платформы на сервере - .NET 4 RC. Поможет ли нам установить последнюю версию .NET 4 на сервер?

Обновление: Проблема решена. Проблема заключалась в том, что мы использовали сторонний элемент управления загрузкой, который добавил свой собственный HttpHandler в Web.Config. Этот HttpHandler начал сбой в .NET 4.

Ответы [ 4 ]

28 голосов
/ 08 июля 2010

С новой платформой .NET 4 возникают некоторые проблемы, если вы запускаете ее на IIS 6 Windows Server. IIS 6 не позволяет вам иметь более одного фреймворка, работающего в одно и то же время, например, IIS7, который может создавать пул приложений для другой фреймворк. Когда IIS 6 работает под ASP.NET 2.0 (версии 3.0 и 3.5 являются расширенными, а не средами), вы столкнетесь с этой ошибкой, если приложение 4.0 Ошибка конфигурации Описание: во время обработки файла конфигурации, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите подробности конкретной ошибки ниже и измените файл конфигурации соответствующим образом. Сообщение об ошибке синтаксического анализатора: нераспознанный атрибут targetFramework. Обратите внимание, что имена атрибутов чувствительны к регистру.

Source Error: 
Line 11:     </configSections> 
Line 12:     <system.web> 
Line 13:         <compilation debug="true" targetFramework="4.0"> 
Line 14:         </compilation> 
Line 15:         <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>   </ system.web>

У вас есть несколько вариантов;

  1. Понизьте .NET-приложение до версии 3.5, чтобы Visual Studio 2010 упростил его. Просто перейдите на вкладку «Свойства веб-сайта» -> «Приложение» и в раскрывающемся списке всех выпусков фреймворка выберите 3.5, VS2010 перезагрузит проект и изменит файл web.config, если вы добавили ссылку на веб-службу, что вам, возможно, придется удалите их и заново добавьте их под 3.5
  2. Чтобы настроить IIS6 и веб-конфигурацию для решения проблемы. Я имею дело со второй частью:

  3. В консоли IIS 6 необходимо щелкнуть проект правой кнопкой мыши, выбрать свойство и проверить вкладку ASP.Net, выбрана ли Framework 4 или нет. Если не выбрать рамки 4.

Но все же вы можете столкнуться с той же ошибкой из-за пула приложений; у вас может быть один и тот же пул приложений для двух разных веб-приложений. IIS 6 не позволяет вам иметь более одного фреймворка, работающего в одно и то же время (это означает, что один пул приложений не может использоваться для двух разных фреймворков), например IIS7, который может создавать пул приложений, предназначенный для разных фреймворков.

  1. Чтобы решить эту проблему, вам необходимо создать пул приложений и назначить этот пул приложений веб-приложению Framework 4. Чтобы назначить пул приложений, в консоли IIS откройте раздел свойств веб-приложения и перейдите на вкладку «Домашний каталог» и выберите пул приложений, который вы создали ранее, из раскрывающегося списка.
  2. Теперь эти двое теперь могут полностью решить вашу проблему. Вы можете получить ошибку как «Страница 404 не найдена». Хотя у вас могут возникнуть проблемы во время разработки.
  3. По сути, страница не найдена. Проблема является причиной другой проблемы, которая скрыта в IIS6. Но вам нужно увидеть настоящую причину. Здесь вы должны открыть консоль IIS6 и открыть «узел расширения веб-службы», который находится прямо под узлом «веб-сайт по умолчанию». Вы увидите весь список фреймворков ASP.Net там, по умолчанию эти фреймворки могут быть запрещены, поэтому выберите ASP.Net Framework 4 и нажмите кнопку «Разрешить». Просмотрите ваш веб-сайт сейчас, вы получите другую ошибку, кроме «404 Страница не найдена». Вы можете получить ошибку, как указано ниже:
  4. Значение атрибута 'compilerVersion' в параметрах провайдера должно быть 'v4.0' При просмотре веб-сайта вы увидите следующую ошибку Значение атрибута 'compilerVersion' в параметрах поставщика должно быть v4.0 или выше, если вы компилируете для версии 4.0 или новее .NET Framework. Чтобы скомпилировать это веб-приложение для .NET Framework версии 3.5 или более ранней, удалите атрибут 'targetFramework' из элемента файла Web.config. Чтобы решить эту проблему, вам нужно изменить файл веб-конфигурации, как показано ниже:

Ранее значение CompilerVersion было установлено как v3.5, но мы уже изменили нашу targetFranework на 4. Таким образом, в соответствии с сообщением об ошибке выше атрибута 'compilerVersion' в параметрах провайдера должно быть 'v4.0' или позже, если вы Компиляция для .NET Framework версии 4.0 или новее.

Hence your new setting will be as below:

    <providerOption name="CompilerVersion" value="v3.5"/>

Надеюсь, это поможетУ вас проблема с переносом и размещением ASP.Net 4 на IIS6.

3 голосов
/ 05 октября 2010

Вот ссылка на более полное решение и объяснение этого:

http://johan.driessen.se/archive/2010/04/13/getting-an-asp.net-4-application-to-work-on-iis6.aspx

2 голосов
/ 12 мая 2010

Проверьте журналы сервера, они, вероятно, дадут вам лучшее представление о том, что происходит.

Вы можете найти путь к файлу журнала, щелкнув правой кнопкой мыши веб-сайт в IIS и перейдя в свойства. Затем перейдите на вкладку «Веб-сайт», в разделе «Включить ведение журнала» щелкните свойства, и откроется окно свойств ведения журнала, в котором будет показан путь к файлу журнала.

0 голосов
/ 12 мая 2010

Я думаю, что в 4.0 настройки страницы по умолчанию на самом деле хранятся в web.config. В IIS 7.0 IIS считывает файл web.config, чтобы определить, что делать для страницы по умолчанию. Я думаю, что IIS 6.0 не читает настройки.

...