2017-07-18 6 views
0

Ich baue MVC5-Anwendung mit Angular 4 und ich benutze Angular Cli, um eckige App zu erstellen.Angular Cli Lazy Load mit MVC5 Anwendung

Das Problem, mit dem ich konfrontiert bin Ich habe MVC5 Anwendung läuft auf Port 5011, während eckige App mit eckigen CLI mit einem Port 4200. Wenn ich die MVC-Anwendung läuft alles gut außer faul geladenes Modul.

Da Lazy geladen Modul erstellen chunks.js und diese Chunks geben Fehler nicht gefunden. Aber alle anderen js wurden erfolgreich geladen. Hier

ist das Problem beim Laden chunks.js

Meine MVC-Anwendung verwenden Port 5011 Angular cli App verwenden Port 4200 I Referenz js Dateien in meinem _Layout.cshtml sind wie folgt

<script type="text/javascript" src="http://localhost:4200/inline.bundle.js"></script> 
     <script type="text/javascript" src="http://localhost:4200/polyfills.bundle.js"></script> 
     <script type="text/javascript" src="http://localhost:4200/styles.bundle.js"></script> 
     <script type="text/javascript" src="http://localhost:4200/vendor.bundle.js"></script> 
     <script type="text/javascript" src="http://localhost:4200/main.bundle.js"></script> 

Während chunks.js versuchen, von dieser uRL automatisch chunks Port unterschiedlich laden

http://localhost:5011/0.chunk.js 

Warum als Angular cl ich port? Wie behebe ich dieses Problem? Nach

+0

Ich bin verwirrt, warum Sie eckigen Dev-Server mit lokalen IIS Express ausgeführt haben? Ich nehme an, Ihr Workflow besteht darin, dass Sie Ihre angulare App über ng build erstellen und dann über Port 5011 auf IIS Express ausführen. – 12seconds

Antwort

0

1) Add in web.config

<system.webServer> 
<modules runAllManagedModulesForAllRequests="true" /> 
<handlers> 
<add name="ApiURIs-ISAPI-Integrated-4.0_2" 
path="/*" 
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" 
type="System.Web.Handlers.TransferRequestHandler" 
preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers> 
</system.webServer> 

Tells ııs Pfade zu handhaben mit Punkten, dh 0.chunk.js

2) Add folgend in App_Start/RouterConfig.cs

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapRoute(
     name: "Redirect", 
     url: "{*.url}", 
     defaults: new { controller = "Home", action = "Index" } 
     ); 

    } 

Router per eMail alle Anfragen an Index der Heimsteuerung in Homecontroller Index folgende Methode

public ActionResult Index() 
    { 
     var a = Request.Url.AbsoluteUri.ToString(); 
     var b = Request.RawUrl.ToString(); 
     if(b!="/") return Redirect("http://localhost:4200"+b); 
     return View(); 
    } 

Sagen Index-Methode

3) In umleiten jede Anfrage zu umleiten enthält jeder andere Dateiname zu localhost: 4200

Was eigentlich passiert, ist unsere index.cshtml Anfrage an sich, wo unsere Chunks auf einem anderen Server serviert werden, zB localhost: 4200, Also, was wir hier machen, wir leiten alle Anfragen um, die Chunks in ihrem Pfad zu localhost enthalten: 4200.

Es ist geprüft und funktionierende Lösung getestet.

+0

Danke für die Lösung Mann –

+0

Ich wäre mehr glücklich gewesen, wenn es dein Problem gelöst hat, ich habe es getestet und es funktioniert, hat es für Sie funktioniert? –