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

ASP.NET Core站点IIS部署后访问文件夹内PDF文件报404如何解决

排查解决IIS 10上ASP.NET Core站点PDF文件访问404问题

1. 基础配置校验

  • 确认文件物理路径是否正确:检查目标PDF文件是否真实存放在c:\inetpub\wwwroot\mysite\pdf\路径下,文件名大小写是否和URL匹配(如果站点开启了大小写敏感规则需要严格对应)
  • 确认IIS站点根目录映射是否正确:打开IIS站点的【基本设置】,检查物理路径是否指向c:\inetpub\wwwroot\mysite\,确保/pdf虚拟路径没有被其他规则占用
  • 确认文件夹权限:检查pdf文件夹的安全属性,确认IIS应用程序池对应的运行身份(默认是IIS AppPool\你的应用池名称)拥有该文件夹的读取和执行权限

2. IIS MIME类型配置校验

IIS默认包含PDF的MIME类型配置,若被误删就会返回404错误:

  • 打开IIS管理器,选中目标站点,双击【MIME类型】功能
  • 查找是否存在.pdf后缀的配置,正确的MIME类型值为application/pdf
  • 如果不存在,点击右侧【添加】,扩展名填写.pdf,MIME类型填写application/pdf,保存后重启站点测试

3. ASP.NET Core静态文件中间件配置校验

ASP.NET Core默认只会处理wwwroot目录下的静态文件,如果PDF文件夹不在默认静态资源目录下,需要手动配置映射:

  • 打开项目的Program.cs(.NET 6+)或Startup.cs文件,检查静态文件中间件配置
  • 若要对外暴露pdf目录的静态文件,需要添加如下配置:
// .NET 6+ 配置示例
app.UseStaticFiles(); // 保留默认wwwroot目录的静态文件处理能力

// 新增pdf目录的静态文件映射规则
app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(builder.Environment.ContentRootPath, "pdf")),
    RequestPath = "/pdf"
});
  • 配置修改后重新发布项目到服务器,重启应用池测试

4. 路由/重写规则冲突排查

  • 检查站点是否配置了URL重写规则,是否有规则把/pdf路径的请求拦截或重定向到其他地址
  • 检查ASP.NET Core的路由配置,是否有自定义路由匹配了/pdf开头的路径,导致静态文件请求被转发到MVC/API接口处理返回404
  • 可以调整中间件顺序,在app.UseRouting();之前调用app.UseStaticFiles();,确保静态文件中间件优先级高于路由处理逻辑

5. 启用IIS直接处理静态文件(可选)

如果希望由IIS直接处理静态文件而不经过ASP.NET Core管道,可以在站点根目录的web.config中添加如下配置:

<configuration>
  <system.webServer>
    <handlers>
      <add name="StaticFilePdf" path="pdf/*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" preCondition="integratedMode" />
    </handlers>
  </system.webServer>
</configuration>

配置后重启IIS站点即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 03:54:01