我们正在从ASP.NET迁移到ASP.NET核心。
我们需要为不同的路径配置不同的身份认证
<location path="controllerpath/method">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</location>
但是一旦我们添加了<location path="xyz">
条目,指定的路径就不再是可达的了,调用者得到一个404错误。
<location path="xyz/abc">
</location>
如果我删除了这个条目,就可以再次访问404。404直接来自IIS,因为即使应用程序无法启动(例如,所有其他调用都会导致503),通过location path指定的路径仍然会导致404。
下面是完整的web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location inheritInChildApplications="false">
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/>
</handlers>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800"/>
</requestFiltering>
<authorization>
<add accessType="Allow" users="*" verbs="OPTIONS"/>
</authorization>
</security>
<aspNetCore processPath="dotnet" arguments=".\assembly.dll" hostingModel="inprocess">
<handlerSettings>
<handlerSetting name="debugLevel" value="file" />
<handlerSetting name="debugFile" value="c:\temp\ancm.log" />
</handlerSettings>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
<httpProtocol allowKeepAlive="false">
<customHeaders>
<remove name="X-Powered-By"/>
</customHeaders>
</httpProtocol>
<directoryBrowse enabled="true"/>
<httpCompression>
<dynamicTypes>
<remove mimeType="*/*"/>
<add mimeType="*/*" enabled="true"/>
</dynamicTypes>
</httpCompression>
</system.webServer>
</location>
<location path="xyz/abc" allowOverride="true">
</location>
</configuration>
<!--ProjectGuid: 29529648-A3F4-44CB-827B-B6B81B00A09C-->
1条答案
按热度按时间wi3ka0sx1#
我找到了解决办法:
属性
inheritInChildApplications="false"
使处理程序没有为其他路径注册。删除该属性(或将值更改为true)后,一切都按预期工作。我猜IIS随后试图将该路径作为资源定位。