【问题标题】:Can the IIS version be specified in a web.config so as to avoid e.g. "the useKernalMode attribute is not allowed"?是否可以在 web.config 中指定 IIS 版本以避免例如“不允许使用 useKernalMode 属性”?
【发布时间】:2020-06-04 10:13:33
【问题描述】:

下面显示了我们在 IIS 中运行的应用程序的 web.config 文件中的一部分。我已将其作为图像包含在内,以便在useKernelMode 下包含绿线,以及将鼠标悬停在其上时显示的错误消息。

注意:如您所见,这也适用于UseAppPoolCredentialsextendedProtection。我只是在此示例中选择了useKernelMode

这里的配置应该是正确的——它是由一个大概知道自己在做什么的管理员设置的,而且它似乎工作正常。还有documentation for Windows AuthenticationuseKernelMode 标识为有效属性。

为什么这被标记为无效属性?不同版本的 IIS 显然支持配置文件中的不同元素和属性 - 可能是 Visual Studio 以某种方式将此配置文件与 web.confi 文件的旧标准相关联,其中属性实际上无效?如果是这样,我是否可以通过某种方式指定应根据特定版本的 IIS 验证此特定配置,例如IIS 7.5、8.5 还是 10?

毕竟,我希望以这种方式标记我的 web.config 中的任何真正错误,但我想避免(大概)这样的误报。

【问题讨论】:

  • 从技术上讲,这很难通过 VS 实现,因为当今确实存在各种版本的 IIS,并且它们具有不同的架构。甚至 IIS 10 也有几个变体。您可以向 Microsoft 提出功能请求,但我不希望他们提供。

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


【解决方案1】:

恐怕与IIS版本无关。 IIS 将其锁定并设置为只读。

如您所见,该部分仅在 applicationhost.config 级别允许。

如果您在 Visual Studio 中访问此内容,您将收到

如果你想解决这个问题,请设置 applicationhost.config。

<section name="windowsAuthentication" overrideModeDefault="Deny" />

<section name="windowsAuthentication" overrideModeDefault="Allow" />

之后,VS 仍然报告无效属性,但 IIS express 和 IIS 将允许这些属性在 web.config 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-11
    • 2015-11-05
    • 1970-01-01
    • 2021-05-29
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多