【发布时间】:2019-06-23 20:31:22
【问题描述】:
我有一个需要 .NET Framework 4.8(或更高版本)的 ASP.NET WebForms 应用程序。如果所需的框架版本不可用(例如,在仅安装 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 的服务器上愉快地运行。
是我遗漏了什么还是这个功能不可用?
【问题讨论】:
-
只是出于好奇,这个“提前失败”对于网络应用程序应该是什么样子的?每个请求都返回 500?
-
@WiktorZychla:是的,返回 500(如果 customErrors/mode 允许,返回描述性和有用的错误消息)会很棒。
-
Application_Start 中的简单运行时检查应该很早就失败(您甚至可以从 web.config 中提取版本以进行检查)stackoverflow.com/questions/951856
-
@DaveM:是的,那是我的备用计划。我只是想确保我没有先重新发明轮子。
标签: c# asp.net .net iis web-config