c# - 获取 HTTP 错误 500.30 - PhysicalFileProvider
问题描述
我想对一些只能由授权用户访问并找到 PhysicalFileProvider 方法的文件使用 wwwroot 之外的路径。
我的启动看起来像:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "Files")),
RequestPath = "/Files"
});
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
我认为这里没什么特别的,可以在我的本地机器上工作。将此上传到托管服务器(主机:smarterasp.net)后,我收到 HTTP 错误 500.30 - ANCM 进程启动失败。如果我注释掉新的 StaticFileOptions 它可以工作,当然该文件夹是不可访问的。
使用 PhysicalFileProvider 时我还有什么事情要做吗?
使用 .Net Core 3.1
解决方案
我重现了你的错误,错误是找不到路径引起的。我通过将静态文件夹添加到发布文件夹中来解决它。
这是我的 startup.cs 的部分代码:
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "Files")),
RequestPath = "/Files"
});
这是我的部分观点代码:
<img src="~/Files/banner1.svg" alt="ASP.NET" class="img-responsive" />
发布文件夹包含发布所需的内容,我将文件文件夹添加到发布文件夹中。然后它就可以工作了。
推荐阅读
- android - 如何从清单文件中提取所有活动名称、意图和意图过滤器?
- python - 将模型和字段对象从视图传递到 Django-tables2 类 - 不呈现表
- python - Python 看不到 kv 文件
- vue.js - Vue Bootstrap Table 为列添加不同的类
- copy - 如何使用 copy_to_user api 从内核空间传递到缓冲区到用户空间
- keras - logits 和 labels 必须具有相同的第一维,得到 logits 形状 [800,3568] 和标签形状 [6400]
- windows - 域策略不应从“作为服务登录”中删除本地帐户
- symfony5 - Symfony5 中的日志弃用
- html - 如何通过复选框 Django 更新布尔字段
- jquery - 同一页面中的交易视图链接 largeChartUrl: