在Ubuntu 16.04中运行ASPNET Core应用程序时如何访问另一个文件夹中的文件?

时间:2016-12-12 02:30:05

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

我正在尝试使用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 ..

  • /家
  • /家/ myuser的
  • /家庭/为myuser / myimages
  • /家庭/为myuser / myimages / somefolder

...我还将chmodded文件someimage.jpg改为777。

我从/ home / myuser / mywebapp运行aspnet核心应用程序。我试过sudo并没有好处。

我可以引用ASPNET Core Web app中位于工作目录之外的目录中的文件吗?

2 个答案:

答案 0 :(得分:2)

默认情况下,静态文件应位于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

答案 1 :(得分:0)

您可以使用'ln'链接到工作目录中的'/ home / myuser / myimages'

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