Нераспознанный атрибут targetFramework. Обратите внимание, что имена атрибутов чувствительны к регистру

Я пытаюсь загрузить свой сайт и получаю следующее сообщение об ошибке:

Нераспознанный атрибут targetFramework. Обратите внимание, что имена атрибутов чувствительны к регистру.

<compilation debug="true" targetFramework="4.0">

Сайт отлично работает на моем локальном ПК, но не открывается, когда я загружаю его на свой хост и пытаюсь просмотреть его в Интернете.

27 ответов

Обычно это происходит, когда у вас есть атрибут targetFramework="4.0" в файле web.config, но пул приложений настроен на запуск ASP.NET 2.0. targetFramework ASP.NET 2.0 полностью не распознает атрибут, поэтому изменение его на 2.0 не даст желаемого эффекта.

Обратитесь в службу поддержки / к администратору и переключите AppPool на 4.0.

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

Регистрация фреймворка в IIS - вот что у меня сработало:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i

В IIS

Нажмите на пулы приложений

Щелкните правой кнопкой мыши DefaultAppPool --->> Установить пул приложений по умолчанию....--->> Измените версию.Net на V 4.0.

Откройте свой IIS (введите inetmgr при запуске) и измените настройку пула приложений. Чтобы увеличить изображение, щелкните изображение правой кнопкой мыши и откройте изображение на новой вкладке

В меню Visual Studio:

Веб-сайт -> Параметры запуска -> вкладка сборки -> Выбрать целевую платформу в раскрывающемся списке (.NET FrameWork 4)

Я столкнулся с той же проблемой при публикации своих первых веб-сервисов. Я решил это, просто сделав это:

  1. Откройте IIS

  2. Нажмите на пулы приложений

  3. Щелкните правой кнопкой мыши DefaultAppPool => Установить пул приложений по умолчанию => Изменить версию.Net на V 4.0. (Вы также можете изменить.Net Framework Версия вашего приложения специально)

Надеюсь, это сработает.

Для IIS 7 попробуйте в соответствии с приведенным рисунком... пометьте меня, если это работает для вас.

Мне пришлось зарегистрировать ASP.Net в IIS, чтобы разрешить его в Windows Server 2008 R2. Скриншот команды ниже

cd /d C:\Windows\Microsoft.NET\Framework\v4.0.30319

iisreset /stop

aspnet_regiis -i

iisreset /start

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'].allowed:True 

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'].allowed:True 

Я использую IIS Express, а не IIS.

Проблема была в файле applicationhost.config, расположенном в: {solution_folder}\. Vs \ config \ applicationhost.config.

Одна из записей пула приложений имела значение managedRuntimeVersion "v2.0". Я изменил его на "v4.0", и он работал правильно.

Я вполне уверен, что основной причиной был один из пакетов NuGet, которые я недавно установил.

    <system.applicationHost>
       <applicationPools>
          <add name="BadAppPool1" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
       </applicationPools>
    </system.applicationHost>

Измените пул приложений на целевой фреймворк 4.0 вместо классического.

  1. RC сайт -> управлять сайтом-> расширенные настройки>
  2. первый вариант изменения от классического до интегрированного фреймворка 4.

У меня также возникла такая же проблема при локальном запуске приложения, которое указывает на.Net Framework 4.7.1. Ошибка была "Нераспознанный атрибут TargetFrameWork", как показано ниже.

Но ни один из приведенных ответов не помог мне. Наконец, когда я изменил свой текущий номер порта (1413) на какое-то другое значение(60179), как показано ниже, оно работало нормально для меня. Но я не уверен по фактической причине, но это сработало.

Открыть проект -> нажать Shift + F4 (открыть страницу свойств) -> Выбрать вариант сборки -> в Target Framework выбрать .NET Framework 4 -> ОК

Создайте новый пул, выбрав.Net Framework v4.0.3xxxxx

использовать режим управления конвейером: встроенный

Назначьте его на свой сайт и готово.

Я получил эту ошибку из-за неудачной компиляции MSBuild в файле проекта, преобразованном из более ранней версии VS в VS2010 и.NET 4.0. На самом деле это был проект веб-развертывания, и решение, которое работало для меня, заключалось в добавлении следующих записей в раздел PropertyGroup в начале файла MSBuild:

<ProductVersion>10.0.11107</ProductVersion>

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

Возможно, они автоматически обновляются при преобразовании других типов проектов в VS2010, но их не было в моем файле проекта Web Deployment после его преобразования.

Чтобы решить эту проблему, просто щелкните значок "Версия ASP.NET" в разделе "Инструменты сайта" панели управления, чтобы переключить платформу на 4.0.

Что я сделал: я изменил значение пула приложений на DefaultAppPool с предыдущего значения. Это делается в разделе "Дополнительные настройки" ("Веб-сайт" -> "Управление веб-сайтом" -> "Дополнительные настройки").

Просто удалите "Target Framework 4.0" и закройте скобку.

Это будет работать

Просто было это в VS 2010.

Исправлено, редактируя файл.sln и изменяя TargetFrameworkMoniker так, чтобы ему было присвоено значение ".NETFramework,Version%3Dv4.0".

Если вы используете IIS Express, он создает новую конфигурацию для каждого сайта, который вы запускаете, и привязывается к URL-адресу (хост / порт). Однако, когда он открывает новый проект, используя тот же порт, он не обновляет конфигурацию.

Это означает, что если у вас есть проект, использующий CLR 2.0 (.NET Framework от 2.0 до 3.5), работающий на каком-либо порту, а затем вы открываете другой проект в том же порту, используя CLR 4 (.NET Framework 4.x+), новый проект попытается для запуска с использованием CLR 2, которая не работает - и в случае, если она даже не распознает атрибут targetFramework.

Одно из решений - очистка сайтов IIS Express, но самый простой способ - изменить порт, чтобы IIS Express создавал новый сайт (с использованием CLR 4) для вашего проекта.

У меня была та же проблема, и я нашел этот хороший скрипт на Poweshell для обновления всех ваших пулов приложений одновременно: https://gallery.technet.microsoft.com/scriptcenter/How-to-set-the-IIS-9c295a20

Обязательно установите вас $IISAppPoolDotNetVersion = "v4.0" переменная в верхней части.

Выполните следующие два шага:

Зарегистрируйте.NET Framework версии 4.0 (если он не зарегистрирован).

  1. C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i

  2. В пуле приложений измените.net framework на v4.0

Увидел ошибку "Нераспознанный атрибут targetFramework" на странице "Вывод на консоль" Jenkins на сервере сборки. Это было после того, как я изменил "целевой фреймворк" для нескольких проектов с ".NET Framework 3.5" на ".NET Framework 4" и зафиксировал свои изменения.

В Jenkins настройки проекта пришлось изменить. Для решения "Версия MSBuild" пришлось изменить с "v3.5" на "v4.0".

Для наложения просто измените версию targetFramework только в файле web.config, остальные вещи не нужно менять.

Если вы компилируете файлы и значение "targetFramework" устанавливается как конкретная версия, то есть 4.0,

Убедитесь, что на хосте запущена платформа.net, как и в той же версии.

Если нет, скачайте.net framework.

После загрузки, если в диспетчере IIS не настроено автоматическое использование расширения вновь загруженной версии.net framework,

добавьте расширение вручную, перейдя в папку недавно загруженного.net framework через диспетчер IIS:

1. щелкните правой кнопкой мыши папку веб-сайта

2. Перейти к "Свойствам"

3. В разделе "Виртуальный каталог" нажмите "Конфигурация".

4. Отредактируйте путь к исполняемому файлу расширения ".aspx" (путь которого указывает на версию, отличную от версии недавно загруженной платформы.net), на правильный путь, который является папкой НОВОЙ загруженной версии платформы.net. и затем выберите файл "aspnet_isapi.dll".

5. нажмите ОК!

Если вы устанавливаете IIS после установки.Net FrameWork. Вам нужно снова установить.net Framework для IIS. Так что все, что нам нужно сделать, это запустить aspnet_regiis -i, Надеюсь, это полезно.

Следующие 2 шага заставят обновить кэш Visual Studio и IIS Express и, как правило, разрешат мои похожие проблемы:

  1. Просто переключите Project Framework с 4+ на.Net Framework 3.5 и запустите его.
  2. Если он запустился успешно, вы можете вернуть его обратно к желаемой целевой структуре 4+ и увидеть, что он, вероятно, снова заработает.

Мне помогло изменение номера порта для локальной разработки Спасибо @Rinay Ashokan. Я выполнил все поиски неисправностей и, наконец, обнаружил, что конфигурации проекта хранятся в IIS Express для номера порта.

Только что возникла эта проблема при развертывании нового приложения на старой коробке IIS. Расследование привело к установке v4.5.1 во время выполнения, но приложение, требующее v4.5.2

Ничего кроме установки правильной версии ASP .Net во время выполнения не потребовалось.

Возможно, у вас есть собственный pr oj-файл MSBUILD и вы используете <AspNetCompiler> задача. В этом случае вы должны добавить ToolPath для.NET4.

<AspNetCompiler
    VirtualPath="/MyFacade"
    PhysicalPath="$(MSBuildProjectDirectory)\MyFacade\"
    TargetPath="$(MSBuildProjectDirectory)\Release\MyFacade"
    Updateable="true"
    Force="true"
    Debug="false"
    Clean="true"
    ToolPath="C:\Windows\Microsoft.NET\Framework\v4.0.30319\">      
</AspNetCompiler>

Для тех, у кого есть это, у которых IIS не запущен на их ПК разработчика, вот что случилось со мной: у меня был один веб-сайт, перезаписанный файлами с сайта diff, который был 4, в то время как предыдущий был 3.5. Получил эту ошибку. Исправить это просто, изменив имя каталога веб-сайта, которое на ПК разработчика может быть чем угодно, так что никаких проблем. Вышесказанное, вероятно, более элегантно, но иногда работает просто, ЕСЛИ вам это сойдет с рук, то есть вы в dev, а не в QA или Prod.

Другие вопросы по тегам