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

416

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

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

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

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

Майк Наччи
источник
Разве это не показывает, какой файл содержит это или где?
Джон Скит
2
Был ли он построен ранее на pre 4.0 framework? Elegantcode.com/2009/11/10/…
Ta01
Эта проблема может быть решена с помощью 4.0.3. Вы можете проверить статью KB здесь. @ me и дайте мне знать, если это решит вашу проблему, я могу попытаться получить канонический вопрос / ответ для этой ошибки и закрыть дубликаты. Спасибо.
Когда я пытаюсь установить KB2599651 (64-разрядная загрузка) на Win 7 x64, я получаю сообщение об ошибке, что «оно не применяется или заблокировано другим условием на вашем компьютере». У меня та же ошибка, что и у OP, установлен фреймворк 4.0, я зарегистрировал его в IIS и выбрал в качестве пула приложений.
Тим
Вы открывали в более старой версии визуальной студии, чем проект был разработан? Или он был разработан в Webmatrix, а затем открыт в более старой визуальной студии?
Раффри

Ответы:

610

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

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

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

vcsjones
источник
20
Спасибо, это решило проблему, перейдите по этой ссылке для пошагового руководства, чтобы ваш AppPool переключился на 4.0: stackoverflow.com/questions/4890245/…
user1010572
спасибо @ vcsjones..мой веб-сайт теперь работает и работает только из-за вас .. :)
Shiva Pareek
просто для добавления в решение @vcsjones регистрация .net 4.0 также может быть пропущена. Вы можете выполнить регистрацию .net 4.0, используя процедуру, приведенную в этой ссылке, а затем вам нужно изменить пул приложений до 4.0.
Рам
4
Когда я погуглил сообщение об ошибке, я нашел эту страницу с этим прекрасным вопросом и даже более красивым ответом, за который я уже несколько месяцев назад голосовал.
Мемет Олсен
81

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

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i
kenik
источник
7
Это работает! для 64-битной находится под C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319
Джерри Лян
1
У меня была та же проблема, но администрация не устранила ее - мне пришлось удалить и заново создать все дерево веб-сайтов и переназначить пул для каждого приложения, и теперь это работает ...
veljkoz
1
Если это свежая версия IIS (на ней не запущены другие сайты) или вы не беспокоитесь о том, что размещенные сайты ломаются из-за изменения структуры, вы можете использовать -i вместо -ir при регистрации.
Рам
44

В IIS

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

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

Александр Залдостанов
источник
43

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

Анкит
источник
26

В меню Visual Studio:

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

elaiyaraja
источник
или 4,5 в моем случае :)
user230910
Что делать, если на сервере только 2.0? Нужно ли устанавливать 4.0 / 4.5 ??
Джуран
@ user230910 Где этот вариант?
DiegoS
Я не могу вспомнить ясно, но я думаю, что это относится к IIS
user230910
Прекрасно работал для меня май 2019 года с использованием приложения веб-форм Visual Studio 2019 на AWS EC2 Windows Server 2019.
Даг
12

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

  1. Откройте IIS

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

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

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

Арсман Ахмад
источник
9

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

введите описание изображения здесь

гм ариф
источник
8

Мне пришлось зарегистрировать 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 

введите описание изображения здесь

LCJ
источник
5

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

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

Я использую 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>
NightShovel
источник
2
Хороший - каждый пост упоминал IIS. Я использовал IIS Express. Спасибо за исправление
PhillyNJ
4

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

Chưa biết
источник
3

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

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

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

Али Адрави
источник
2

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

Sumanuski
источник
2

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

<ProductVersion>10.0.11107</ProductVersion>

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

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

ergolargo
источник
2

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

Элдон
источник
2

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

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

введите описание изображения здесь

Риной Ашокан
источник
Я просто проверяю, что у меня была именно эта ошибка, и я попытался просто изменить порт, как указано в этом ответе. Я запускаю тестовый клиент WCF, чтобы запустить этот сервис на локальном хосте. После изменения номера порта служба смогла запуститься. Благодарим за ваше предложение.
Эван
Перепробовав все предложения, только этот решил мою проблему. Огромное спасибо.
Прабо
Добро пожаловать @Prabo, если возможно, пожалуйста, помогите мне с голосованием UP
Риной Ашокан
Добро пожаловать @Evan, если возможно, пожалуйста, помогите мне с голосованием UP
Риной Ашокан
1

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

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

Matt
источник
0

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

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

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

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

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

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

2. Перейти в «Свойства»

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

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

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

Подача
источник
0

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

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

Вигнеш
источник
0

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

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

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

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

SharpCoder
источник
0

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

Joe.wang
источник
0

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

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

mathijsuitmegen
источник
0

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

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

грабить
источник
0

Возможно, у вас есть собственный proj-файл 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>
intrepidis
источник
0

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

Cheah Eng Teong
источник
0

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

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

Гектор С.
источник
0

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

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

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

karthikn2411
источник
-1

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

Павел
источник