如何在Web应用程序中指定最低.NET Framework版本?

时间:2019-06-23 20:31:22

标签: c# asp.net .net iis web-config

我有一个ASP.NET WebForms应用程序,它需要.NET Framework 4.8(或更高版本)。如果所需的框架版本不可用(例如,在仅安装4.7的系统上),我希望应用程序“过早失效”。换句话说,我想要supportedRuntime tag for executables之类的东西,仅用于Web应用程序。

这可以通过一些web.config设置来实现吗?我尝试过:

  • system.web / httpRuntime / targetFramework
  • system.web / compilation / targetFramework
  • startup / supportedRuntime / 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>

但是,该Web应用程序仍然可以在仅安装.NET Framework 4.7的服务器上愉快地运行。

我错过了任何东西吗?或者只是此功能不可用?

2 个答案:

答案 0 :(得分:1)

据我所知,如果您不安装.net framework 4.8,则在IIS上运行yur Web应用程序时,它将显示以下错误:

enter image description here

我建议您尝试按照以下步骤检查是否已安装.net frameworr 4.8:

1。从“开始”菜单中,选择“运行”,输入regedit,然后选择“确定”。您必须具有管理凭据才能运行regedit。

2。在注册表编辑器中,打开以下子项:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ NET Framework Setup \ NDP \ v4 \ Full。如果没有Full子项,则说明您没有安装.NET Framework 4.5或更高版本。

3。检查名为Release的DWORD条目。如果存在,则说明您已安装.NET Framework 4.5或更高版本。它的值是对应于.NET Framework特定版本的发布密钥。例如,在下图中,Release条目的值为528040,这是.NET Framework 4.8的发布密钥。

结果:

enter image description here

答案 1 :(得分:0)

@BrandoZhang的答案是正确的,<compilation targetFramework="4.8" /> 确实有效。我添加了此答案以解释为什么在我的情况下它不起作用。 (评论时间过长,可能会对遇到相同问题的人有所帮助。)

就我而言,web.config不在Web应用程序的目录中。它位于 parent 目录中,因为我有多个Web应用程序需要以完全相同的方式进行配置,并且我不想重复自己。

事实证明,compilation的{​​{1}}属性显然不会被子应用程序继承(如果您知道为什么,请随时发表评论) 。将以下targetFramework文件直接添加到应用程序目录中 可以解决我的问题:

web.config