我的web.config中包含以下部分:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <security>
        <authentication>
            <anonymousAuthentication enabled="true" />
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
</system.webServer>


IIS7崩溃并抱怨自闭节:


模块AnonymousAuthenticationModule
通知AuthenticateRequest
处理程序StaticFile
错误代码0x80070021
配置错误不能在此路径上使用此配置部分。当节锁定在父级时,会发生这种情况。默认情况下,锁定是(overrideModeDefault =“ Deny”),或者是由具有overrideMode =“ Deny”或旧版allowOverride =“ false”的位置标记显式设置的。


Config Source  
   69:  <authentication>
   70:    <anonymousAuthentication enabled="true" />


所以解决此问题的常用方法是进入%windir%\system32\inetsrv\config\applicationHost.config并解锁以下部分:

    <sectionGroup name="system.webServer">
        <sectionGroup name="security">
            <section name="access" overrideModeDefault="Deny" />
            <section name="applicationDependencies" overrideModeDefault="Deny" />
            <sectionGroup name="authentication">
                <section name="anonymousAuthentication" overrideModeDefault="Allow" />
                <section name="basicAuthentication" overrideModeDefault="Allow" />
                <section name="clientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="digestAuthentication" overrideModeDefault="Allow" />
                <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="windowsAuthentication" overrideModeDefault="Allow" />
            </sectionGroup>


(或者appcmd unlock config)。

奇怪的事情:我已经做到了,但仍然抱怨。是我正在使用的所有网站的根目录):

<location path="MVC" overrideMode="Allow">
    <system.webServer overrideMode="Allow">
        <security overrideMode="Allow">
            <authentication overrideMode="Allow">
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="true" />
            </authentication>
        </security>
    </system.webServer>
</location>


它还是爆炸了。我对为什么会这样感到困惑。我无法将其从web.config中删除,我想找到根本问题。

是否可以从IIS中获取特定信息,而该规则最终会否定我的身份?

编辑:通过使用IIS7管理控制台,我可以修复该问题,方法是移至非常根目录(我的机器),然后单击“编辑配置”并在那里解锁该部分。仍然我想知道是否有更好的方法,因为我找不到它实际修改过的文件。

评论

从内存来看,通常在500.19中有一个部分告诉您哪个文件位于哪个位置,位于底部(我认为)

这已经在SO
上得到了很好的回答

#1 楼

制定了解决这些问题的以下步骤:


打开IIS管理器
单击左侧树中的服务器名称
右窗格“管理”部分,双击“配置编辑器”
,在顶部选择system.webServer/security/authentication/anonymousAuthentication部分

右窗格,单击“解锁部分”
在顶部,选择system.webServer/security/authentication/windowsAuthentication部分

/>在右窗格中,单击“解锁部分”


评论


是否具有等效的PowerShell?我希望能够编写此脚本。

– PeteStensønes
18年1月4日在10:52

如果找到一个,请随时发布:)

–煽风点火
18年1月4日在11:15

我会的,我希望别人已经知道如何做。

– PeteStensønes
18年1月4日在11:26

@PeteStensønes它有! >%windir%\ system32 \ inetsrv \ appcmd.exe解锁配置-section:system.webServer / security / authentication / windowsAuthentication

–joacar
19年5月7日在8:59



#2 楼

这解决了我在Windows Server 2012,IIS 8.5上的错误。应该也适用于其他版本。


转到“服务器管理器”,单击“添加角色和功能”

在“角色”部分中选择:Web服务器

在“安全性”子节中选择所有内容(我不使用摘要,IP限制和URL授权,因为我们不使用它们)
在“应用程序开发”下,选择.NET Extensibility 4.5ASP>NET 4.5,两个ISAPI条目
部分选择:NET 3.5.NET 4.5ASP.NET 4.5

在Web服务器部分中选择:Web Server (all)Management Tools (IIS Management Console and Management Service)Windows


#3 楼

配置锁定可以在以下位置发生:


Applicationhost.config(配置字符串:MACHINE / WEBROOT / APPHOST)
站点Web.config文件(MACHINE / WEBROOT / APPHOST /网站)名称)
通过任何应用程序web.config文件(机器/网络地址/ APPHOST /站点名称/应用程序名称)能够将这些设置配置给层次结构中比您低的任何人。

使用GUI的功能委托特性是没有错的,并且与AppCMD所做的事情非常相似, Covers-在<asp>标记中给定部分的OverrideMode设置为您关注的配置级别。

APPCMD可用于解锁文件,但请注意其执行位置-

<location>命令的末尾添加-commit:apphost的目标是Applicationhost.config,这是IIS操作的关键文件(替换元数据库)从早期版本;存储所有集中式设置,但允许在web.config文件中进行覆盖(如果允许的话)。

如果没有-commit:apphost,APPCMD会将目标定位为web.config文件的最接近逻辑点-无论是在网站或应用级别,并使用上面的设置字符串表示已更改设置。 (此外:您仍然只能定位子网站中的设置,但要提交给apphost-它使用位置标签来完成此操作)。

因此,如果它说(内存释义)“对MACHINE / WEBROOT / APPHOST”,则表示IIS层次结构的顶层。 Dodgy网站后面的物理路径,并在该位置写入了web.config文件(或对其进行了更新)。

#4 楼

如果您使用的是IISExpress和Visual Studio 2015,则将applicationHost.config存储在$(solutionDir).vs\config\applicationhost.config中(感谢Nime Cloud的回答)。

在适当的地方只需更改overrideModeDefault="Allow"。 “ lang-xml prettyprint-override”> <sectionGroup name="security"> <section name="access" overrideModeDefault="Deny" /> <section name="applicationDependencies" overrideModeDefault="Deny" /> <sectionGroup name="authentication"> <section name="anonymousAuthentication" overrideModeDefault="Allow" /> etc...

#5 楼

在您的应用程序池中尝试,禁用32位应用程序支持
IIS管理器->应用程序池->选择[您的AppPool]->高级设置->启用32位应用程序-将其更改为'False'

#6 楼

看看IIS-无法在此路径上使用此配置部分(配置锁定吗?)

在Windows 10上,我接受的答案对我来说是完美的,它指示执行以下操作:


在搜索框中单击“开始按钮”
,在功能窗口中输入“打开或关闭Windows功能”,然后单击:“ Internet信息服务” “
单击:”万维网服务“
单击:”应用程序开发功能“
检查(启用)功能。除了CGI,我检查了所有内容。