C# 是否可以在web.config中指定IIS版本,以避免;不允许使用useKernalMode属性";?

C# 是否可以在web.config中指定IIS版本,以避免;不允许使用useKernalMode属性";?,c#,.net,web-services,iis,web-config,C#,.net,Web Services,Iis,Web Config,下面显示了我们在IIS中运行的应用程序的web.config文件的一部分。我将它作为一个图像包含在useKernelMode下的绿线中,以及在其上方悬停时显示的错误消息 (注意:正如您所看到的,这也适用于UseAppPoolCredentials和extendedProtection。我刚刚为本例选择了useKernelMode) 这里的配置应该是正确的-它是由一个管理员设置的,他大概知道自己在做什么,而且它似乎工作正常。还有一个属性将useKernelMode标识为有效属性 那么,为什么将其

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

(注意:正如您所看到的,这也适用于
UseAppPoolCredentials
extendedProtection
。我刚刚为本例选择了
useKernelMode

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

那么,为什么将其标记为无效属性?不同版本的IIS显然在配置文件中支持不同的元素和属性-是否Visual Studio以某种方式将此配置文件与web.confi文件的旧标准相关联,而在该标准中,该属性实际上是无效的?如果是这样的话,我是否有办法指定应根据特定版本的IIS(如IIS 7.5、8.5或10)验证此特定配置


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

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

如您所见,该节仅由applicationhost.config级别允许

如果您在visual studio中访问此项,您将收到

如果要解决此问题,请设置applicationhost.config

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


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


从技术上讲,VS很难实现这一点,因为现在确实有各种版本的IIS,它们有不同的模式。即使iis10也有几个变体。您可以向Microsoft提出功能请求,但我不希望他们提供。
<section name="windowsAuthentication" overrideModeDefault="Allow" />