2016-04-14 48 views
4

當我們從IIS運行我們的應用程序時,我們最終得到了下面的ContentRoot和WebRoot。我們如何設置ContentRootPath和WebRootPath?

ContentRoot: C:\MyApp\wwwroot 
WebRoot:  C:\MyApp\wwwroot\wwwroot 

這裏是我們如何設置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(); 
    } 
} 

從智能感知我看到...

  • ContentRootPath包含應用程序內容文件。
  • WebRootPath包含網頁提供的內容的文件。

我們如何使測試輸出看,而不是像這樣:

ContentRoot: C:\MyApp\ 
WebRoot:  C:\MyApp\wwwroot\ 

回答

0

在RC2,如果我們把web.configwwwroot旁邊,點IIS在MyApp目錄這樣的...

MyApp 
    web.config 
    wwwroot 

...原始問題的代碼輸出此...

ContentRoot: C:\MyApp\ 
WebRoot:  C:\MyApp\wwwroot\ 
+1

你確定網頁。配置應該旁邊wwwroot,而不是在wwwroot或內部批准發佈?我仍在搜索正確的位置,因爲一旦在Azure Web應用程序中部署了靜態文件,或者.exe沒有執行,就不會提供靜態文件。 – Zygimantas

2

雖然仍在準備RC2文檔,這裏是我學到了什麼,而試圖部署RC2預應用作爲Azure的Web應用程序:

  1. 沒有的Visual Studio工具還,所以應用程序必須發佈並通過FTP手動部署。對於發佈,使用:dotnet publish --configuration Release --output ./approot

  2. 如果通過FTP連接到Azure中,你可能會看到類似:

enter image description here

  • 的「 approot「文件夾可以替換爲已發佈的文件夾(web.config保留在批准文件中)。

  • 的 「爲approot」 必須被配置爲在天青門戶虛擬應用程序(默認爲現場\ wwwroot的):

  • enter image description here

  • 的最後一件事讓靜態文件從wwwroot文件夾送達,Startup.cs文件應該被修改爲包括自定義UseWebRoot電話:
  • var currentDirectory = Directory.GetCurrentDirectory(); 
    
    var host = new WebHostBuilder() 
        .UseKestrel() 
        .UseWebRoot(Path.Combine(currentDirectory, "..", "wwwroot")) 
        .UseDefaultHostingConfiguration(args) 
        .UseIISIntegration() 
        .UseStartup<Startup>() 
        .Build(); 
    

    完成這些步驟後,您應該在Azure上運行ASPNET Core pre-RC2 Web應用程序。

    +0

    更新:對於RC2,如果使用kudu部署應用程序(「在Azure門戶中配置部署源」),則必須在Azure門戶的應用程序屬性中設置附加環境變量:SCM_TARGET_PATH,值爲「.. \ approot」(不含引號)。否則,應用程序將部署到\ site \ webroot,並且您將擁有\ site \ webroot \ webroot – Zygimantas

    相關問題