如何在Azure的ASP.NET Core MVC中托管.pem文件到/.well-known目录?
解决Azure Web App中ASP.NET Core MVC项目.pem文件404问题
以下是针对你遇到的问题的排查和解决步骤:
检查静态文件中间件配置
ASP.NET Core默认静态文件中间件不会自动识别并提供.pem这类非常规文件类型。需要在Program.cs中明确配置允许该扩展名:var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); var app = builder.Build(); // 配置静态文件,添加.pem对应的MIME类型 app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = new FileExtensionContentTypeProvider { Mappings = { [".pem"] = "application/x-pem-file" } } }); app.UseRouting(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();这段代码会告知静态文件中间件如何处理
.pem文件,允许其被正常访问。配置Azure Web App的MIME类型
如果静态文件配置后仍无法访问,可通过配置文件补充MIME类型映射:- Windows计划:在项目根目录添加
web.config文件,写入以下内容:<configuration> <system.webServer> <staticContent> <mimeMap fileExtension=".pem" mimeType="application/x-pem-file" /> </staticContent> </system.webServer> </configuration> - Linux计划:在
wwwroot/.well-known目录下创建.htaccess文件,添加:AddType application/x-pem-file .pem
- Windows计划:在项目根目录添加
验证路径大小写一致性
若使用Linux环境的Azure Web App,文件系统区分大小写。请确认访问URL中的文件名(如XXX.pem)与Kudu控制台中显示的文件名(如xxxx.pem)大小写完全匹配,Linux环境下大小写不同会被视为不同文件。排查路由或重写规则拦截
检查项目Program.cs中的路由配置,以及Azure门户Web App的「URL重写」设置,确保没有自定义规则拦截或重定向.well-known路径的请求。
内容的提问来源于stack exchange,提问作者user849953
相关产品推荐
相关产品推荐

