【问题标题】:.NET Core 2.2 can't be published to Azure.NET Core 2.2 无法发布到 Azure
【发布时间】:2019-07-05 13:29:08
【问题描述】:

我有 ASP.NET Core 2.2 项目,可以在本地成功运行。但是当我尝试将其发布到 Azure 时出现错误:

Unhandled Exception: System.ArgumentException: The path must be absolute.
Parameter name: root
   at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
   at Tms.Core.Infrastructure.TmsFileProvider..ctor(IHostingEnvironment hostingEnvironment) in C:\Users\rover\Source\Repos\TMS\Libraries\Tms.Core\Infrastructure\TmsFileProvider.cs:line 23
   at Tms.WebApi.Startup.ConfigureServices(IServiceCollection services) in C:\Users\rover\Source\Repos\TMS\Web\Tms.WebApi\Startup.cs:line 222
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services)
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices()
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.Initialize()
   at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build()
   at Tms.WebApi.Program.Main(String[] args) in C:\Users\rover\Source\Repos\TMS\Web\Tms.WebApi\Program.cs:line 17

其中 Program 类的代码如下:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

启动ConfigureServices方法:

        var provider = services.BuildServiceProvider();
        var hostingEnvironment = provider.GetRequiredService<IHostingEnvironment>();
        CommonHelper.DefaultFileProvider = new TmsFileProvider(hostingEnvironment);

地点:

    public TmsFileProvider(IHostingEnvironment hostingEnvironment) 
        : base(File.Exists(hostingEnvironment.WebRootPath) ? Path.GetDirectoryName(hostingEnvironment.WebRootPath) : hostingEnvironment.WebRootPath)
    {
        var path = hostingEnvironment.ContentRootPath ?? string.Empty;
        if (File.Exists(path))
            path = Path.GetDirectoryName(path);

        BaseDirectory = path;
    }

(不要问我这个代码,这不是我的代码,我只需要使用它)

我很困惑,为什么 Azure 知道我的本地路径 C:\Users\rover\Source\Repos\TMS\Web\Tms.WebApi\,它是在哪里描述的以及如何解决部署问题?

【问题讨论】:

  • 是否有任何迷你演示可以重现您的问题?您是如何将其发布到 Azure 的?

标签: azure asp.net-core deployment .net-core publish


【解决方案1】:

我发现了问题,当wwwroot 文件夹不存在时,hostingEnvironment 可以为空。然后 .NET Core 在 Azure 上抛出这样的异常

【讨论】:

  • 您好,我遇到了一个我认为与您的问题相似的问题,将我的工作从我的工作计算机上传到 azure 后,我的工作计算机仍然可以正常工作。但是当我把它拉到我的家用电脑上时,它拒绝运行,出现异常 System.ArgumentException: 'the path must be absolute.'我确实记得从 git 存储库中排除了我的 wwwroot 文件夹,这可能是我异常的原因吗?
猜你喜欢
  • 2019-09-29
  • 1970-01-01
  • 2019-07-08
  • 2020-08-25
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多