【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

 

相关文章
|
10月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
310 0
|
9月前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
1079 3
|
9月前
|
存储 Linux 网络安全
【Azure App Service】Root CA on App Service
Azure App Service for Windows应用连接外部SSL服务时,需确保其证书由受信任的根CA颁发。多租户环境下无法修改根证书,但ASE(单租户)可加载自定义CA证书。若遇证书信任问题,可更换为公共CA证书或将应用部署于ASE并导入私有CA证书。通过Kudu的PowerShell(Windows)或SSH(Linux)可查看当前受信任的根证书列表。
212 13
|
10月前
|
API 网络架构 容器
【Azure Container App】查看当前 Container App Environment 中的 CPU 使用情况的API
在扩展 Azure Container Apps 副本时,因 Container App Environment 的 CPU 核心数已达上限(500 cores),导致扩展失败。本文介绍如何使用 `az rest` 命令调用 Azure China Cloud 管理 API,查询当前环境的 CPU 使用情况,并提供具体操作步骤及示例。
356 17
|
10月前
|
数据安全/隐私保护
【Azure Function App】PowerShell Function 执行 Get-AzAccessToken 的返回值类型问题:System.String 与 System.Security.SecureString
将PowerShell Function部署到Azure Function App后,Get-AzAccessToken返回值类型在不同环境中有差异。正常为SecureString类型,但部分情况下为System.String类型,导致后续处理出错。解决方法是在profile.ps1中设置环境变量$env:AZUREPS_OUTPUT_PLAINTEXT_AZACCESSTOKEN=false,以禁用明文输出。
251 1
|
9月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
1536 139
|
9月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
674 137
|
9月前
|
数据采集 JavaScript 前端开发
开发比分App?你缺的不是程序员
开发体育比分App,关键不在代码,而在懂体育、懂数据、懂用户。明确定位、理清需求、选好数据源,再找专业的产品、数据与技术人才协同,才能少走弯路。程序员最后入场,效率最高。
380 154
|
9月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1717 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡