ContentRootPath在开发和Azure Web应用程序中有所不同

时间:2018-01-15 10:37:35

标签: c# azure .net-core

当我将Dot Net Core Web应用程序部署到Azure时,Environment.ContentRootPath变量设置为[myproject]/wwwroot。但是,在开发过程中,它只是[myproject]

为什么在Azure部署中会发生变化?

如何使其保持一致?

供参考,这是我的IWebHost

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((builderContext, config) =>
                {
                    var env = builderContext.HostingEnvironment;

                    config.AddJsonFile("appsettings.json", false, true)
                        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true, true);

                    if (env.IsDevelopment())
                        config.AddUserSecrets<Startup>();

                    config.AddEnvironmentVariables();
                })
                .UseSetting("detailedErrors", "true")
                .UseApplicationInsights()
                .UseStartup<Startup>()
                .CaptureStartupErrors(true)
                .Build();

1 个答案:

答案 0 :(得分:0)

使用KUDU,您可以发现您的网络内容已部署到D:\home\site\wwwroot,如下所示:

enter image description here

默认情况下,D:\home\site\wwwroot将用作内容根,主机将在Azure Web App上托管您的应用程序时搜索内容文件(例如MVC视图文件等)。

在开发过程中,您的应用程序是从项目的根文件夹启动的,因此项目的根文件夹将用作内容根。

根据我的理解,您可能会误解项目中的wwwroot文件夹,并使用Azure Web App上的wwwroot文件夹来存储您的网络内容。

此外,您可以使用UseContentRoot自定义内容根文件夹。如果路径不存在,则主机将无法启动。您可以关注的详细信息Hosting in ASP.NET Core