J'ai créé un projet de base dotnet avec le modèle ASP.NET Core avec Angular en utilisant la CLI de dotnet
dotnet new angular
Maintenant, chaque fois que je lance l'application en utilisant la commande dotnet run
, angular sert avec un port différent à chaque fois.
J'ai essayé de définir le port de service par défaut dans angular-cli.json
"defaults": {
..
"serve": {
"port": 4200
}
}
ne fonctionne pas bien.
Je n'ai trouvé aucune documentation en ligne. Où puis-je définir le port par défaut?
D'accord, le changement de port n'a pas d'importance, car je pouvais accéder à l'application Angular à partir de l'URL http: // localhost: 5000
$ dotnet run
Using launch settings from /Users/raviteja/Desktop/CSharp/SignalR-Angular-ChatApp/Properties/launchSettings.json...
: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
User profile is available. Using '/Users/raviteja/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.
info: Microsoft.AspNetCore.SpaServices[0]
Starting @angular/cli on port 56082...
Hosting environment: Development
Content root path: /Users/raviteja/Desktop/CSharp/SignalR-Angular-ChatApp
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.SpaServices[0]
> [email protected] start /Users/raviteja/Desktop/CSharp/SignalR-Angular-ChatApp/ClientApp
> ng serve --extract-css "--port" "56082"
** NG Live Development Server is listening on localhost:56082, open your browser on http://localhost:56082/ **
info: Microsoft.AspNetCore.SpaServices[0]
Date: 2018-05-31T23:44:11.061Z
info: Microsoft.AspNetCore.SpaServices[0]
Hash: 7f8c3d48fb430eed2337
Time: 13815ms
chunk {inline} inline.bundle.js (inline) 3.85 kB [entry] [rendered]
chunk {main} main.bundle.js (main) 50.5 kB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js (polyfills) 549 kB [initial] [rendered]
chunk {styles} styles.bundle.css (styles) 119 kB [initial] [rendered]
chunk {vendor} vendor.bundle.js (vendor) 9.5 MB [initial] [rendered]
info: Microsoft.AspNetCore.SpaServices[0]
webpack: Compiled successfully.
Je pensais que le port spécifié dans cette ligne était celui que je devrais utiliser pour accéder à l'application Angular.
Starting @angular/cli on port 56082...
s’avère que ce n’est pas celui que je devrais utiliser
à partir de MSDN :
L'application démarre une instance du serveur CLI Angular dans le fichier Contexte. Un message semblable au suivant est enregistré: NG Live Development Server écoute sur localhost :, ouvrez votre fichier navigateur sur http: // localhost : /. Ignore ce message - c'est pas l'URL de l'application combinée ASP.NET Core et Angular CLI.
Mais quand j'essayais d'accéder à http: // localhost: 5000 , je rencontrais une erreur SSL, après avoir creusé davantage, j'ai trouvé cette ligne dans Startup.cs
app.UseHttpsRedirection();
Après avoir ajouté cette condition, tout fonctionne correctement et je peux accéder à l'application Angular à http: // localhost: 5000
if (!env.IsDevelopment())
app.UseHttpsRedirection();
Les services de spa prennent la commande "ng serve" du fichier package.json et ajoutent un port aléatoire avant d'exécuter la commande. Sous Windows, pour contourner ce problème, ajoutez votre propre commande de port et le suffixe "& REM" qui indique au processeur de commande que tout ce qui suit est un commentaire.
"scripts": {
"ng": "ng",
"start": "ng serve --hmr --o --port=5002 &REM",
...
}
Dans la fenêtre de commande, vous verrez quelque chose de similaire au suivant quand il est traité:
> ng serve --hmr --o --port=5002 &REM "--port" "58198"
En règle générale, vous avez raison, mais j’ai déjà vu quelques emplacements où cette valeur peut être remplacée. On serait dans le package.json, plus précisément dans ce bloc:
"scripts": {
"ng": "ng",
"start": "ng serve --sourcemap --extractCss --Host 0.0.0.0 --proxy-config proxy.config.json",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
}
Aussi, vous pouvez archiver un fichier nommé proxy.config.json si vous en avez un
Essayez la commande suivante:
ng set defaults.serve.port=4201