С новой платформой .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>
У вас есть несколько вариантов;
- Понизьте .NET-приложение до версии 3.5, чтобы Visual Studio 2010 упростил его. Просто перейдите на вкладку «Свойства веб-сайта» -> «Приложение» и в раскрывающемся списке всех выпусков фреймворка выберите 3.5, VS2010 перезагрузит проект и изменит файл web.config, если вы добавили ссылку на веб-службу, что вам, возможно, придется удалите их и заново добавьте их под 3.5
Чтобы настроить IIS6 и веб-конфигурацию для решения проблемы.
Я имею дело со второй частью:
В консоли IIS 6 необходимо щелкнуть проект правой кнопкой мыши, выбрать свойство и проверить вкладку ASP.Net, выбрана ли Framework 4 или нет. Если не выбрать рамки 4.
Но все же вы можете столкнуться с той же ошибкой из-за пула приложений; у вас может быть один и тот же пул приложений для двух разных веб-приложений.
IIS 6 не позволяет вам иметь более одного фреймворка, работающего в одно и то же время (это означает, что один пул приложений не может использоваться для двух разных фреймворков), например IIS7, который может создавать пул приложений, предназначенный для разных фреймворков.
- Чтобы решить эту проблему, вам необходимо создать пул приложений и назначить этот пул приложений веб-приложению Framework 4.
Чтобы назначить пул приложений, в консоли IIS откройте раздел свойств веб-приложения и перейдите на вкладку «Домашний каталог» и выберите пул приложений, который вы создали ранее, из раскрывающегося списка.
- Теперь эти двое теперь могут полностью решить вашу проблему. Вы можете получить ошибку как
«Страница 404 не найдена».
Хотя у вас могут возникнуть проблемы во время разработки.
- По сути, страница не найдена. Проблема является причиной другой проблемы, которая скрыта в IIS6. Но вам нужно увидеть настоящую причину. Здесь вы должны открыть консоль IIS6 и открыть «узел расширения веб-службы», который находится прямо под узлом «веб-сайт по умолчанию». Вы увидите весь список фреймворков ASP.Net там, по умолчанию эти фреймворки могут быть запрещены, поэтому выберите ASP.Net Framework 4 и нажмите кнопку «Разрешить».
Просмотрите ваш веб-сайт сейчас, вы получите другую ошибку, кроме «404 Страница не найдена». Вы можете получить ошибку, как указано ниже:
- Значение атрибута '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.