Warm tip: This article is reproduced from serverfault.com, please click

其他-在Asp.Net 5中获取IIS版本或其他IIS服务器变量?

(其他 - Get IIS version or other IIS Server variables in Asp.Net 5?)

发布于 2020-11-30 17:25:28

在Asp.Net Core 2.x中,我可以通过Server Vars获得IIS信息,如下所示:

  IServerVariablesFeature serverVars = HttpContext.Features.Get<IServerVariablesFeature>();
  string iis_version = serverVars["SERVER_SOFTWARE"];
  string app_pool_id = serverVars["APP_POOL_ID"];

即使使用Kestrel作为反向代理,此方法也有效。但是,以这种方式访问​​IIS服务器变量似乎已在Asp.Net Core 3.x中停止工作。从那时开始,现在在Asp.Net 5.0中IServerVariablesFeature也不再存在,并且在请求时返回null。

如何访问IIS服务器变量(即https://docs.microsoft.com/zh-cn/previous-versions/iis/6.0-sdk/ms524602(v=vs.90)?redirectedfrom=MSDN)在Asp.Net 5.x中?

Questioner
RonC
Viewed
11
Bruce Zhang 2020-12-01 11:20:37

实际上,我的测试表明该代码仍然可以在Asp.net 5中运行,并且可以获得IIS变量。 在此处输入图片说明 这是代码

using Microsoft.AspNetCore.Http.Features;

 IServerVariablesFeature serverVars = HttpContext.Features.Get<IServerVariablesFeature>();
  string iis_version = serverVars["SERVER_SOFTWARE"];
  string app_pool_id = serverVars["APP_POOL_ID"];
  string runtime = System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription;

文档中还提到了IServerVariablesFeature的Asp.net核心版本信息

适用于ASP.NET Core 5.0 3.1 3.0 2.2

因此,我认为你应该仔细检查应用程序中的其他代码,无论是引用变量时拼写错误还是Asp.net Core 5安装问题