You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure上IIS无法提供静态文件letsencrypt.txt的问题求助

解决Azure App Service中letsencrypt.txt访问404的问题

问题根源

你的web.config里配置的aspNetCore handler路径为*,会拦截所有请求并转发给ASP.NET Core应用处理,但你的应用未配置静态文件支持,导致IIS无法直接返回letsencrypt.txt文件,最终返回404。

解决方案

方案1:修改web.config,让IIS直接处理静态文件

在<handlers>节点中,在aspNetCore handler之前添加专门处理letsencrypt.txt的规则,让IIS直接返回该文件,无需经过ASP.NET Core:

<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <!-- 添加这一行 -->
        <add name="LetsEncryptTxt" path="letsencrypt.txt" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <!-- 其余配置保持不变 -->
    </system.webServer>
  </location>
</configuration>

方案2:在ASP.NET Core应用中启用静态文件中间件

如果希望应用本身处理静态文件请求,在Program.cs(或Startup.cs)中添加静态文件中间件,确保它在路由配置之前执行:

var builder = WebApplication.CreateBuilder(args);

// 保留原有服务注册配置
builder.Services.AddControllers();

var app = builder.Build();

// 启用静态文件支持,放在路由、授权等中间件之前
app.UseStaticFiles();

// 其余中间件配置
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

app.Run();

额外检查项

  • 文件名一致性:确认wwwroot下的文件确实是letsencrypt.txt,没有大小写或拼写错误(虽然Windows文件系统不区分大小写,但URL路由可能存在严格匹配情况)。
  • API Management规则:如果你的域名通过API Management转发,检查APIM是否有路由规则拦截了/letsencrypt.txt的请求,或未正确将该路径转发到App Service。
  • 日志中的HTTPS+端口80:这是Azure App Service反向代理的正常行为,前端代理处理HTTPS后转发到后端80端口,并非404的原因。

内容的提问来源于stack exchange,提问作者BWhite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:48:25