如何在 Web 应用程序中指定最低 .NET Framework 版本?
How do I specify a minimum .NET Framework version in a web application?
我有一个 ASP.NET WebForms 应用程序,它需要 .NET Framework 4.8(或更高版本)。如果所需的框架版本不可用(例如,在仅安装了 4.7 的系统上),我希望应用程序 "fail early"。换句话说,我想要类似 的东西,仅用于 Web 应用程序。
这可以通过一些 web.config 设置来实现吗?我试过:
- 系统.web/httpRuntime/targetFramework
- 系统.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 的服务器上正常运行。
我是不是漏掉了什么或者这个功能不可用?
据我所知,如果你没有安装 .net framework 4.8,如果你在 IIS 上 运行 你的 web 应用程序,它会显示以下错误:
我建议您可以尝试按照以下步骤来检查您是否安装了 .net frameworr 4.8:
1.From开始菜单,选择运行,输入regedit,然后selectOK.You必须有管理凭据才能运行regedit。
2.In 注册表编辑器,打开以下子项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full。如果 Full 子项不存在,则说明您没有安装 .NET Framework 4.5 或更高版本。
3.Check 用于名为 Release 的 DWORD 条目。如果存在,则说明您安装了 .NET Framework 4.5 或更高版本。它的值是一个发布密钥,对应于特定版本的 .NET Framework。例如下图中,Release项的值为528040,即.NET Framework 4.8的release key。
结果:
@BrandoZhang 的回答是正确的,<compilation targetFramework="4.8" />
有效。我添加了这个答案来解释为什么它在我的案例中不起作用。 (评论太长了,可能会对遇到同样问题的人有所帮助。)
在我的例子中,web.config
不在 Web 应用程序的目录中。它位于 parent 目录中,因为我有多个 Web 应用程序需要以完全相同的方式进行配置,我不想重复自己。
显然,compilation
的 targetFramework
属性不会被子应用程序继承(如果您知道 为什么 ,请放心发表评论)。在应用程序的目录中直接添加以下 web.config
文件 解决了我的问题:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation targetFramework="4.8" />
</system.web>
</configuration>
我有一个 ASP.NET WebForms 应用程序,它需要 .NET Framework 4.8(或更高版本)。如果所需的框架版本不可用(例如,在仅安装了 4.7 的系统上),我希望应用程序 "fail early"。换句话说,我想要类似
这可以通过一些 web.config 设置来实现吗?我试过:
- 系统.web/httpRuntime/targetFramework
- 系统.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 的服务器上正常运行。
我是不是漏掉了什么或者这个功能不可用?
据我所知,如果你没有安装 .net framework 4.8,如果你在 IIS 上 运行 你的 web 应用程序,它会显示以下错误:
我建议您可以尝试按照以下步骤来检查您是否安装了 .net frameworr 4.8:
1.From开始菜单,选择运行,输入regedit,然后selectOK.You必须有管理凭据才能运行regedit。
2.In 注册表编辑器,打开以下子项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full。如果 Full 子项不存在,则说明您没有安装 .NET Framework 4.5 或更高版本。
3.Check 用于名为 Release 的 DWORD 条目。如果存在,则说明您安装了 .NET Framework 4.5 或更高版本。它的值是一个发布密钥,对应于特定版本的 .NET Framework。例如下图中,Release项的值为528040,即.NET Framework 4.8的release key。
结果:
@BrandoZhang 的回答是正确的,<compilation targetFramework="4.8" />
有效。我添加了这个答案来解释为什么它在我的案例中不起作用。 (评论太长了,可能会对遇到同样问题的人有所帮助。)
在我的例子中,web.config
不在 Web 应用程序的目录中。它位于 parent 目录中,因为我有多个 Web 应用程序需要以完全相同的方式进行配置,我不想重复自己。
显然,compilation
的 targetFramework
属性不会被子应用程序继承(如果您知道 为什么 ,请放心发表评论)。在应用程序的目录中直接添加以下 web.config
文件 解决了我的问题:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation targetFramework="4.8" />
</system.web>
</configuration>