【问题标题】:Not allowed to load local resource: file:// in ASP.NET Core不允许加载本地资源:ASP.NET Core 中的 file://
【发布时间】:2020-04-13 10:40:07
【问题描述】:

我的 C 盘上保存了如下图片:

C:\Users\Public\images\employees

我的项目中有一个视图模型,其中包含属性string ImageUrl。在我的控制器中,我正在根据图像名称获取图像:

var model = new EmployeeViewModel
{
    FirstName = employeeDetails.FirstName,
    FullName = employeeDetails.FullName,
    LastName = employeeDetails.LastName,
    ImageUrl = new System.Uri(Path.Combine(@"C:\Users\Public\images\employees", "John.jpg")).AbsoluteUri
};

然后我将这个模型传递给视图。在我的视图中,我想按如下方式显示图像:

但是我遇到了一个异常

不允许加载本地资源:ASP.NET Core 中的 file://

有人可以帮忙吗?此外,我的应用程序将部署到域。如何确保图像仍能显示?

【问题讨论】:

  • 您的 IIS 身份是否对该目录的文件夹和文件具有权限?
  • 是的,它具有所需的权限

标签: c# asp.net-mvc asp.net-core


【解决方案1】:

将此模型传递到视图中。在我的视图中,我想显示图像

如果您想在查看页面中显示存储在服务器上C drive 文件夹中的图像,您可以参考以下代码 sn-p 从预期位置提供文件。

app.UseStaticFiles();

app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        Path.Combine(@"C:\Users\Public\images", "employees")),
    RequestPath = "/employees"
});

在控制器动作中

var model = new EmployeeViewModel
{
    FirstName = employeeDetails.FirstName,
    FullName = employeeDetails.FullName,
    LastName = employeeDetails.LastName,
    ImageUrl = "/employees/John.jpg"
};

有关提供静态文件和 PhysicalFileProvider 的更多信息,请查看:

【讨论】:

    【解决方案2】:

    将您的图像文件夹放在 wwwroot 文件夹中。那就是静态文件应该在的地方。这对我有用。

    <img src="/Imagens/conflito.png" alt="Sample Photo" height="300"  />
    

    example

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案3】:

    您可以创建虚拟目录,该目录将在“C:\Users\Public\images”处具有此物理位置。使用外部文件而不将它们添加到项目资源是不安全的。或者将此图像添加到默认用于项目资源的 wwwroot。

    虚拟目录: https://www.c-sharpcorner.com/article/virtual-directory-inside-of-asp-net-core-app-in-iis/

    【讨论】:

      【解决方案4】:

      我创建了一个 .Net Fiddle 来帮助展示我认为您正在经历的事情,并填补了一些空白。在这里能找到它。

      https://dotnetfiddle.net/S6deCz

      当尝试使用各种浏览器时,它会突出显示浏览器正在阻止远程代码从本地计算机访问文件。

      我建议解决此问题并允许所有人访问它的最佳方法是确保将员工图像存储在 Web 服务器上(上面的问题和答案中的 IIS)。

      我已添加 ServerImageUrl 以演示如何使用位于 Web 服务器的资源来实现此目的。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-23
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2016-10-08
        • 2016-11-04
        相关资源
        最近更新 更多