【发布时间】:2020-08-03 02:25:15
【问题描述】:
我正在开发一个 net core 3.1 Web 应用程序。
身份验证方案之一是证书,因此我想使用客户端证书身份验证来保护页面。
这是 Web.config IIS 配置(显然我在解决方案 applicationHostConfig 中设置了<section name="access" overrideModeDefault="Allow"):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_HTTPS_PORT" value="44300" />
<environmentVariable name="COMPLUS_ForceENC" value="1" />
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
<location path="certificate/login">
<system.webServer>
<security>
<access sslFlags="Ssl,SslNegotiateCert,SslRequireCert" />
</security>
</system.webServer>
</location>
<system.webServer>
<security>
<access sslFlags="Ssl" />
</security>
</system.webServer>
</configuration>
应用程序成功启动,当我调用 localhost://33400/Certificate/login 时,浏览器显示证书页面握手正确,我选择了一个证书,然后... IIS 让我大吃一惊 404 静态文件处理程序!所有其他页面都运行良好。
我正在努力解决这个错误,请有人帮助我。
【问题讨论】:
-
如果您的应用程序没有证书控制器和登录方法,则应为 404。
-
我的应用程序有一个带有登录操作的证书控制器
-
然后检查为什么ASP.NET Core管道被绕过了,docs.microsoft.com/en-us/iis/troubleshoot/…
-
我激活 IISEXPRESS 跟踪日志并记录,结果为 404。与其他操作的区别是:
{80000188-0003-E900-B63F-84710C7967BB} StaticFileStaticFileModule,DefaultDocumentModule,DirectoryListingModule -
似乎新的 AspNetCoreModuleV2 无法识别此配置,查看跟踪 iis 尝试所有模块(IsapiFilterModule、ApplicationInitializationModule、WebSocketModule、ConfigurationValidationModule、httpRedirectionModule、...)但不是 AspNetCoreModuleV2,因此以 staticFile 和结尾404
标签: asp.net-core iis iis-express