【Azure App Service】.NET应用读取静态文件时遇见了404错误的解决方法

简介: 【Azure App Service】.NET应用读取静态文件时遇见了404错误的解决方法

问题描述

使用.NET 8开发应用,部署到Azure App Service后,需要直接访问一些静态图片/视频文件,但是直接通过相对路径获取文件时,遇见404错误........

 

问题解答

在网上搜索“.NET应用读取静态文件”关键字,找到了问题原因。在IIS部署应用时代(.NET Core之前),是通过IIS服务来匹配文件路径,所以可以通过进入根目录后的文件夹路径找到静态文件(如css,font,js, 图片和视频等文件)。

 

但是,在.NET Core时代,需要使用 app.UseStaticFiles() 中间件实现。并且文件路径为。 默认目录为 {content root}/wwwroot。如果文件路径不在wwwroot目录中。可以通过UseStaticFiles方法指定并修改。例如:

app.UseStaticFiles(new StaticFileOptions()

{

   FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "Images")),

   RequestPath = new PathString("/Images")

});

StaticFileOptions的属性介绍:静态文件的实际路径为当前根目录下的Images文件夹,当通过URL请求图片时,通过根路径‘/’后的images来映射到真实文件夹Images中。

//
        // Summary:
        //     The relative request path that maps to static resources. This defaults to the site root '/'.
        public PathString RequestPath { get; set; }
        //
        // Summary:
        //     The file system used to locate resources
        //
        // Remarks:
        //     Files are served from the path specified in Microsoft.AspNetCore.Hosting.IWebHostEnvironment.WebRootPath
        //     or Microsoft.AspNetCore.Hosting.IWebHostEnvironment.WebRootFileProvider which
        //     defaults to the 'wwwroot' subfolder.
        public IFileProvider? FileProvider { get; set; }

当把 UseStaticFiles 添加后,部署到App Service后,直接访问静态图片路径,成功返回图片。


 

参考资料

ASP.NET Core 中的静态文件 : https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files?view=aspnetcore-8.0

 

相关文章
|
18天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
87 6
|
2月前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
130 2
|
3月前
|
编解码 数据安全/隐私保护
.Net PdfiumViewer 打印时无法渲染电子签名问题的解决方法
【10月更文挑战第14天】这段内容介绍了使用 PdfiumViewer 库处理 PDF 文件时遇到电子签名无法打印的问题及其解决方法。首先分析了 PdfiumViewer 默认设置或对电子签名支持不足可能导致此问题,建议更新库版本并通过 NuGet 包管理器进行升级。接着检查打印机设置和驱动程序,确保设置正确且驱动为最新版本。然后优化自定义打印代码,提高渲染分辨率,确保电子签名正确加载。最后,验证 PDF 文件格式和兼容性,必要时联系技术支持或求助技术社区。
153 2
|
3月前
|
机器学习/深度学习 搜索推荐 数据挖掘
北邮移动互联网应用大作业实验报告《云账本app》开发
北邮移动互联网应用大作业实验报告《云账本app》开发
54 0
|
8天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
4月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
51 7
|
4月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
87 0
|
5月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
66 0
|
5月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?