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

http://testsiteDefault.aspx с IIS 6.0 и .Net 4?

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

http://testsite/Default.aspx

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

UPDATE: Я пробовал следующую ссылку, но это не сработало.

Getting an ASP.NET 4 application to work on IIS6

Структура версии на сервере .NET 4 RC. Помогло ли это, если мы установим последнюю версию .NET 4 на сервер?

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

+0

просто двойную проверку, ваши настройки документа по умолчанию, перейдя в свойство сайта, вкладка «Документы» и добавление ' default.aspx 'в начало списка? Высказывание «документа по умолчанию» делает его похожим на ваш на IIS 7.0 – Kelly

+0

@ Kellls: Мы также можем установить документ по умолчанию для IIS 6.0. – Amitabh

+0

@Amitabh: Да, установка документа по умолчанию в 6.0 была процедурой, которую я описал в своем предыдущем комментарии. Я просто имею в виду, что «документ по умолчанию» больше относится к термину IIS7.0. В IIS6.0 он помечен как «страница контента по умолчанию». Я просто хотел дважды проверить, что вы используете IIS 6.0. – Kelly

ответ

2

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

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

0

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

28

С новой платформой .NET 4 возникают некоторые проблемы, если вы используете ее на IIS 6 Windows Server. IIS 6 не позволяет вам иметь более одного фреймворка в то время, когда работает в том же экземпляре, что и IIS7, который может создавать приложения с различными таргетингами. Когда IIS 6 работает под ASP.NET 2.0 (3.0 и 3.5 - это супермножество, а не фреймворки), вы собираетесь нажать эту ошибку, если приложение равно 4.0 Ошибка конфигурации Описание: Произошла ошибка во время обработки файла конфигурации, необходимого для обслуживать этот запрос. Ознакомьтесь с конкретными сведениями об ошибках ниже и соответствующим образом измените свой файл конфигурации. Сообщение об ошибке Parser: непризнанный атрибут '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 перезагрузите проект и измените веб-интерфейс.config, если вы добавили ссылку на веб-службу, вам может потребоваться удалить их и повторно добавить их под 3.5
  2. Чтобы настроить IIS6 и веб-конфигурацию для решения проблемы. Я рассматриваю вторую часть:

  3. В консоли IIS 6 вам нужно щелкнуть правой кнопкой мыши по проекту и щелкнуть по нему, и проверить вкладку ASP.Net, выбрана ли платформа 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. Чтобы скомпилировать это веб-приложение для версии 3.5 или более ранней версии .NET Framework, удалите атрибут 'targetFramework' из элемента файла Web.config. Чтобы решить эту проблему, необходимо изменить файл конфигурации веб, как показано ниже:

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

Hence your new setting will be as below: 

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

Надеюсь, что это решит проблему миграции и хостинга ASP.Net 4 на IIS6.

+0

Спасибо за ваше ценное решение. У меня была проблема для размещения сайта .Net4.0 в конфигурации IIS 2.0. виртуальный директор y в разделе «Веб-сайт по умолчанию» и привязал его к отдельному пулу приложений. Сработало !. – Sunil

+1

thx! второй № 3 сделал это для меня. – Trev

+2

Это решает мою проблему: «По умолчанию эти рамки могут быть запрещены, поэтому, пожалуйста, выберите ASP.Net Framework 4 и нажмите кнопку« Разрешить ». Спасибо. – Fanda

3

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

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

+0

hmmm ... снова смотрел на сообщение и понял, что плакат попробовал это в одном из своих обновлений. Думал, что я был полезен, и вместо этого я просто повторяюсь ... В любом случае, эта связь работала для меня. –

Смежные вопросы