首页 > 解决方案 > IIS 中访问受限的 ASP.NET Core 自定义错误页面

问题描述

我想通过仅在 IIS (10) 中配置来限制对我的 ASP.NET Core 应用程序的访问。这不是问题,因为我只启用“Windows 身份验证”,然后我就可以做到

<location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\MyDLL.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" >
      </aspNetCore>
      <security>
         <authorization>
           <remove users="*" roles="" verbs="" />
           <add accessType="Allow" users="user.withaccess />
         </authorization>
       </security>
    </system.webServer>
  </location>

这工作正常,但每个没有访问权限的用户只会得到 401 响应并且没有错误页面。通常你可以配置这样的东西:

<location path="." inheritInChildApplications="false">
    <system.webServer>
      <!-- ... -->
      <httpErrors errorMode="Custom" existingResponse="PassThrough">
            <remove statusCode="401" subStatusCode="-1" />
            <error statusCode="401" subStatusCode="2" prefixLanguageFilePath="" path="401.htm" responseMode="File" />
        </httpErrors>
    </system.webServer>
  </location>

但是自定义错误页面只能由已经可以访问应用程序的用户访问(尝试打开错误页面也会导致未经授权的用户出现 401)。

现在就我而言,目前无法更改 ASP.NET Core 应用程序本身,因此我必须在 IIS 中进行。

我必须配置什么才能提供自定义错误页面,但其他所有内容都受到保护?

标签: asp.net-coreiisiis-10

解决方案


推荐阅读