【问题标题】:When running ASPNET Core application in Ubuntu 16.04 how can I access a file in another folder?在 Ubuntu 16.04 中运行 ASPNET Core 应用程序时,如何访问另一个文件夹中的文件?
【发布时间】:2016-12-12 02:30:05
【问题描述】:

我正在尝试使用 dotnet core 1.1 在 Ubuntu 16.04 中运行 ASP5/MVC6 ASPNET 核心应用程序。我的应用程序位于用户主目录之外的一个目录中,而主目录之外的另一个目录包含一个包含图像 (.jpg) 文件的文件夹结构。

我收到以下错误...

fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[0]
An unhandled exception has occurred: Access to the path '/home/myuser/myimages/somefolder' is denied.
System.UnauthorizedAccessException: Access to the path '/home/myuser/myimages/somefolder' is denied. ---> System.IO.IOException: Permission denied

这里是一个文件夹结构的例子……

/home/myuser/mywebapp/mywebapp.dll

/home/myuser/myimages/somefolder/someimage.jpg

我已将以下目录更改为 777..

  • /家
  • /home/myuser
  • /home/myuser/myimages
  • /home/myuser/myimages/somefolder

...我也将文件 someimage.jpg 修改为 777。

我正在从 /home/myuser/mywebapp 运行 aspnet 核心应用程序。 sudo 我试过了,不行。

我可以在 ASPNET Core Web 应用程序中引用工作目录之外的目录中的文件吗?

【问题讨论】:

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


    【解决方案1】:

    默认情况下,静态文件应位于工作文件夹内的 wwwroot 文件夹中。但是如果你想把它们放在外面,你可以配置静态文件中间件:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.UseStaticFiles();
    
        app.UseStaticFiles(new StaticFileOptions()
        {
            FileProvider = new PhysicalFileProvider(
                Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")),
            RequestPath = new PathString("/StaticFiles")
        });
    }
    

    见教程here

    【讨论】:

    • Alex - 这太酷了!谢谢!教程也很有帮助!
    【解决方案2】:

    您可以使用“ln”在工作目录中创建指向“/home/myuser/myimages”的链接

    然后你可以引用你工作目录中的文件

    【讨论】:

    • 不确定我是否理解“In”的用法。能详细点吗?
    • 这是必要的,因为您的图像文件夹不在您的工作目录中。不是吗?
    • 德普。您指的是使用 shell 命令“ln”的符号链接,如小写“LN”。我以为你在“最后,我很困惑”中输入了正确的大小写“in”。
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 2017-04-27
    • 2021-08-19
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多