本地IIS部署.NET API应用,静态文件访问404问题求助
解决IIS部署.NET API后静态文件直接访问404的问题
先确认IIS的静态文件功能已安装
打开「控制面板」→「程序和功能」→「启用或关闭Windows功能」,找到「Internet Information Services」→「万维网服务」→「常见HTTP功能」,勾选「静态文件」,确定完成安装。配置IIS站点的静态文件处理规则
打开IIS管理器,找到你部署的对应localhost:4343的站点,双击站点内的「处理程序映射」,检查是否存在「StaticFile」处理程序,且其路径规则覆盖.pdf这类静态文件后缀。如果没有,右键点击「添加模块映射」:- 请求路径填
* - 模块选择「StaticFileModule」
- 名称设为StaticFile(或自定义名称),点击确定添加。
- 请求路径填
给静态文件夹配置读取权限
右键c:\web\Resources\Attachments文件夹,选择「属性」→「安全」,确保IIS应用池对应的身份(通常是IIS_IUSRS,或自定义应用池账户)拥有「读取」权限。若没有,点击「编辑」→「添加」,输入IIS_IUSRS,验证名称后确定,勾选「读取」权限。调整web.config配置(无需修改.NET代码)
打开c:\web下的web.config文件,在<system.webServer>节点内添加以下配置,确保静态请求不被.NET路由拦截:<staticContent> <!-- 为PDF添加MIME类型,其他格式可参照添加 --> <mimeMap fileExtension=".pdf" mimeType="application/pdf" /> </staticContent> <handlers> <!-- 让静态文件请求优先被处理 --> <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> </handlers> <rewrite> <rules> <!-- 规则:匹配Resources/Attachments下的文件请求,直接返回不进入.NET路由 --> <rule name="StaticFiles" stopProcessing="true"> <match url="^(Resources/Attachments/.*)$" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" /> </conditions> <action type="None" /> </rule> </rules> </rewrite>保存配置后重启IIS站点。
测试访问
重启站点后直接访问https://localhost:4343/Resources/Attachments/test.pdf,验证是否能正常打开文件。
内容的提问来源于stack exchange,提问作者Musaffar Patel
相关产品推荐
相关产品推荐

