2017-08-28 89 views
0

我最近開始了一個Asp.Net核心應用程序。後來我想將它與Angular整合,但首先我想要一個能夠用html代替cshtml的機制。Asp Net Core如何提供html靜態頁面?

如果我將cshtml的擴展名更改爲html,我得到這個'InvalidOperationException:未找到視圖'索引'。

我也試過在啓動

app.UseStaticFiles(); 
app.UseMvc(routes => 
{ 
    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}/{id?}");  
}); 

,但它也沒有工作。

可選是將cshtml佈局內容與html頁面集成,但我認爲這是不可能的。

所以,我的問題是,我可以簡單地用html替換所有的cshtml嗎?

回答

0

靜態文件通常位於Web根目錄(wwwroot)文件夾中。默認情況下,這是我們可以直接從文件系統直接提供文件的唯一位置。

1.創建一個文件html內側(wwwroot)中名稱index.html

2.安裝Microsoft.AspNet.StaticFiles經由的NuGet

3.添加UseStaticFiles在Startup.cs下配置梅索德

public void Configure(IApplicationBuilder app) 
{ 
    app.UseStaticFiles(); // For the wwwroot folder 

    // if you want to run outside wwwroot then use this 
    //request like http://<app>/StaticFiles/index.html 
    /* app.UseStaticFiles(new StaticFileOptions() 
    { 
     FileProvider = new PhysicalFileProvider(
      Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")), 
     RequestPath = new PathString("/StaticFiles") 
    });*/ 
} 

如果你想運行wwwroot以外的靜態文件,然後 -

public void Configure(IApplicationBuilder app) 
{ 
    app.UseStaticFiles(); // For the wwwroot folder 

    //request like http://<app>/StaticFiles/index.html 
    app.UseStaticFiles(new StaticFileOptions() 
    { 
     FileProvider = new PhysicalFileProvider(
      Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")), 
     RequestPath = new PathString("/StaticFiles") 
    }); 
} 

一樣,如果你想的index.html是默認的文件http://<app>/StaticFiles/index.html

你的要求,這是一種功能,IIS一直有,那麼

public void Configure(IApplicationBuilder app) { 
    app.UseIISPlatformHandler(); 
    app.UseDeveloperExceptionPage(); 

    app.UseRuntimeInfoPage(); 
    app.UseDefaultFiles(); 
    app.UseStaticFiles(); 

} 

希望它幫助你。您可以從this鏈接獲得更多信息。

+0

你如何服務器index.cshtml? – Reft