Как указать минимальную версию .NET Framework в веб-приложении? - PullRequest
1 голос
/ 23 июня 2019

У меня есть приложение ASP.NET WebForms, для которого требуется .NET Framework 4.8 (или выше). Я хочу, чтобы приложение «сбрасывалось раньше», если требуемая версия платформы недоступна (например, в системе с установленной только 4.7). Другими словами, я хочу что-то вроде тега supportedRuntime для исполняемых файлов , только для веб-приложений.

Может ли это быть достигнуто через некоторые настройки web.config? Я пробовал:

  • system.web / httpRuntime / targetFramework
  • system.web / сборник / targetFramework
  • запуск / поддерживаемое время выполнения / sku (просто для полноты я не ожидал, что это сработает)

т. Е .:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  ...
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
  </startup>

  <system.web>
    <httpRuntime targetFramework="4.8" />
    <compilation targetFramework="4.8" />
    ...
  </system.web>
</configuration>

Однако веб-приложение по-прежнему успешно работает на сервере с установленным только .NET Framework 4.7.

Я что-то пропустил или эта функция просто недоступна?

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Насколько я знаю, если вы не устанавливаете .net framework 4.8, если вы запускаете веб-приложение yur на IIS, оно покажет ошибку ниже:

enter image description here

Я предлагаю вам попробовать выполнить следующие шаги, чтобы убедиться, что вы установили .net frameworr 4.8:

1.В меню «Пуск» выберите «Выполнить», введите regedit, а затем нажмите «ОК». Для запуска regedit у вас должны быть учетные данные администратора.

2.В Редакторе реестра откройте следующий подраздел: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full. Если полный подраздел отсутствует, значит, у вас не установлен .NET Framework 4.5 или более поздней версии.

3. Проверьте наличие записи DWORD с именем Release. Если он существует, значит, у вас установлена ​​.NET Framework 4.5 или более поздние версии. Его значение - ключ выпуска, соответствующий определенной версии .NET Framework. Например, на следующем рисунке значение записи Release равно 528040, то есть ключу выпуска для .NET Framework 4.8.

Результат:

enter image description here

0 голосов
/ 24 июня 2019

@ Ответ BrandoZhang правильный, <compilation targetFramework="4.8" /> работает . Я добавил этот ответ, чтобы объяснить, почему он не работает в моем случае. (Слишком долго для комментария, и это может помочь кому-то с той же проблемой.)

В моем случае web.config не находился в каталоге веб-приложения. Он был расположен в каталоге parent , потому что у меня есть несколько веб-приложений, которые необходимо настроить точно так же, и я не хотел повторяться.

Оказывается, что атрибут compilation targetFramework, по-видимому, не наследуется дочерними приложениями (если вы знаете , почему , не стесняйтесь оставлять комментарии). Добавление следующего web.config файла напрямую в каталог приложения устранило проблему для меня:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation targetFramework="4.8" />
  </system.web>
</configuration>
...