亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

部署 Angular 6 ASP.NET Core 應用程序

部署 Angular 6 ASP.NET Core 應用程序

C#
飲歌長嘯 2021-11-28 16:10:10
我開發了一個 asp.net core 2.0 MVC 應用程序,并添加了一個 Angular 6 前端應用程序。它們都存在于同一個項目結構中。asp.net 核心應用程序充當客戶端 Angular 6 應用程序的 API。我一直在并排開發它們,并在 Startup.cs 文件中包含以下代碼段,以允許在兩個應用程序運行時進行開發:ConfigureServices      services.AddSpaStaticFiles(configuration => {        configuration.RootPath = "ClientApp/dist";      });Configure      app.UseSpa(spa => {        spa.Options.SourcePath = "ClientApp";        if (env.IsDevelopment()) {          spa.UseAngularCliServer(npmScript: "start");        }      });Angular 應用程序的項目結構可以在ClientApp 中找到。我知道希望將此項目部署到 IIS。所以我正在遠離開發環境,所以我知道代碼行:spa.UseAngularCliServer(npmScript: "start");不會運行。當我通過 Visual Studio 發布項目并將其移動到 inetpub 文件夾時,就像我對其他應用程序所做的那樣,它不會為我在 Angular 6 應用程序中開發的頁面提供服務。嘗試訪問我在 Angular 6 應用程序的 RoutingModule 中定義的 /Home 等頁面時,出現 500 內部服務器錯誤。我假設這是因為我需要構建 Angular 應用程序(我可以通過ng build --prod)并將編譯后的 JS 文件添加到 HTML 頁面。但我不確定如何解決這個問題。如果有人有任何相關網頁的鏈接,將不勝感激?;蛘撸绻梢蕴峁┤魏畏浅S袔椭囊娊?。更新 #1:在 Startup.cs 文件中,我讓 app.UseDeveloperExceptionPage() 在生產模式下運行時可用。我得到的不是 500 內部服務器錯誤頁面,而是異常: SPA 默認頁面中間件無法返回默認頁面“/index.html”,因為找不到它,并且沒有其他中間件處理請求。我還注意到發布后 ClientApp/dist 文件夾不存在。我手動構建了 ClientApp 并將其添加到 inetpub 中的應用程序中。現在,我在控制臺中收到錯誤消息:runtime.a66f828dca56eeb90e02.js:1 Uncaught SyntaxError: Unexpected token <polyfills.7a0e6866a34e280f48e7.js:1 Uncaught SyntaxError: Unexpected token <Request:10 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:8080/styles.169e0a841442606822c8.css".scripts.ee7fed27c36eaa5fa8a9.js:1 Uncaught SyntaxError: Unexpected token <main.befe6f4d3c1275f2e1b3.js:1 Uncaught SyntaxError: Unexpected token <
查看完整描述

3 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

您需要將此代碼用于ASP.NET Core 2.0,而不是您正在使用的代碼。我的應用程序是使用這種方法發布的。


        app.UseMvc(routes =>

        {

 //Remove this if you don't need it

            routes.MapRoute(

                name: "default",

                template: "{controller=Home}/{action=Index}/{id?}");


            routes.MapSpaFallbackRoute(

                name: "spa-fallback",

              defaults: new { controller = "Home", action = "SPAIndex" }); // For SPA 

        });

您需要在 HomeController 中有一個返回視圖的操作。查看代碼是


<app asp-prerender-module="ClientApp/dist/main-server">Loading...</app>


查看完整回答
反對 回復 2021-11-28
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

只需進行此更改,它應該適用于 Prod IIS


 public void ConfigureServices(IServiceCollection services)

    {

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);


        // In production, the Angular files will be served from this directory

        services.AddSpaStaticFiles(configuration =>

        {

            configuration.RootPath = "ClientApp/dist/client";


        });

    }


查看完整回答
反對 回復 2021-11-28
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

Visual Studio 2019 為此提供了一個項目模板,只需在開始頁面的第一步中選擇新建項目,ASP.NET Core Web Application C#,輸入解決方案名稱,然后選擇 Angular 項目模板。您可以將解決方案基于在 .NET Core 或 .NET Framework 下運行的 ASP.NET Core。


查看完整回答
反對 回復 2021-11-28
  • 3 回答
  • 0 關注
  • 278 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號