我们如何设置 ContentRootPath 和 WebRootPath?

Sha*_*tin 6 asp.net-core

当我们从 IIS 运行我们的应用程序时,我们最终会得到以下 ContentRoot 和 WebRoot。

ContentRoot:  C:\MyApp\wwwroot
WebRoot:      C:\MyApp\wwwroot\wwwroot
Run Code Online (Sandbox Code Playgroud)

这是我们如何设置ContentRootWebRoot

public class Startup
{
    private readonly IHostingEnvironment _hostingEnv;

    public Startup(IHostingEnvironment hostingEnv)
    {
        _hostingEnv = hostingEnv;
    }

    public void Configure(IApplicationBuilder app)
    {
        app.Run(context =>
        {
            // test output
            context.Response.WriteAsync(_hostingEnv.ContentRootPath + "\r\n");
            return context.Response.WriteAsync(_hostingEnv.WebRootPath + "\r\n");
        });
    }

    public static void Main(string[] args)
    {
        var contentRoot = Directory.GetCurrentDirectory();
        var webRoot = Path.Combine(contentRoot, "wwwroot");

        var host = new WebHostBuilder()
            .UseKestrel()
            .UseIISPlatformHandlerUrl()
            .UseContentRoot(contentRoot)  // set content root
            .UseWebRoot(webRoot)          // set web root
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}
Run Code Online (Sandbox Code Playgroud)

从智能感知我看到......

  • ContentRootPath包含应用程序内容文件。
  • WebRootPath包含 Web 可服务的内容文件。

我们如何使测试输出看起来像这样:

ContentRoot:  C:\MyApp\
WebRoot:      C:\MyApp\wwwroot\
Run Code Online (Sandbox Code Playgroud)

Zyg*_*tas 5

虽然 RC2 文档仍在准备中,但以下是我在尝试将 RC2 之前的应用程序部署为 Azure Web App 时学到的知识:

  1. 目前还没有 Visual Studio 工具,因此必须通过 FTP 手动发布和部署该应用程序。对于发布,请使用:dotnet publish --configuration Release --output ./approot

  2. 如果通过 FTP 连接到 Azure,您可能会看到类似以下内容的内容:

在此输入图像描述

  1. “approot”文件夹可以替换为已发布的文件夹(web.config 保留在 approot 中)。

  2. “approot”必须在 Azure 门户中配置为虚拟应用程序(默认为 site\wwwroot):

在此输入图像描述

  1. 从 wwwroot 文件夹获取静态文件的最后一件事是,应修改 Startup.cs 文件以包含自定义 UseWebRoot 调用:
var currentDirectory = Directory.GetCurrentDirectory();

var host = new WebHostBuilder()
    .UseKestrel()
    .UseWebRoot(Path.Combine(currentDirectory, "..", "wwwroot"))
    .UseDefaultHostingConfiguration(args)
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();
Run Code Online (Sandbox Code Playgroud)

完成这些步骤后,您应该可以在 Azure 上运行 ASPNET Core pre-RC2 Web 应用程序。


Sha*_*tin 1

在 RC2 中,如果我们将 IIS 放在web.config旁边wwwroot并将其指向MyApp这样的目录...

MyApp
  web.config
  wwwroot
Run Code Online (Sandbox Code Playgroud)

...原始问题的代码输出这个...

ContentRoot:  C:\MyApp\
WebRoot:      C:\MyApp\wwwroot\
Run Code Online (Sandbox Code Playgroud)