Comment déployer angulaires-cli application sur iis
J'ai simple angular2-cli app (une page avec model driven forme - pas de routeur). Avec "ng servir" tout fonctionne très bien. J'ai fait de la production de la version avec ng build --produit. J'ai copié tous ./dist dossier contenu dans un nouveau dossier sous C:\inetpub\wwwroot. J'ai fait virtuel application depuis la console de gestion IIS. Defualt application fichier est index.html. Je parcourir pour app uri et j'obtiens seulement la page avec "Chargement...". J'essaie de construire des sans-switch (seulement ng construire), mais le résultat est le même. Angulaire de l'application ne se charge pas. Est-il autre chose nécessaire pour publier angulaire application sur IIS?
J'ai trouvé ce qui n'allait pas. Dans index.html j'aurais du <base href="./"> au lieu de <base href="/">. Quand j'ai ajouté dot, tout commence à travailler.
Vous avez un problème si vous allez utiliser le routeur. Mais comme vous l'avez mentionné que vous n'aurez pas, ce qui signifie href=". " devrait suffire. Vous avez probablement publié votre application dans un sous-dossier. Vous pouvez également utiliser ce nom de sous-dossier comme base href
Vous pouvez le déployer sans Web.config
OriginalL'auteur PaulStanek | 2016-12-23
Vous devez vous connecter pour publier un commentaire.
Ici est de savoir comment je remédier à cette situation;
ng build
dist
dossierbase href
dans votre index.html de/
à/yourAliasNameOnIIS
Utiliser ce site web.config pour rediriger les demandes vers votre index.html page
Convertir votre répertoire virtuel à une application web
Vous pouvez également utiliser
ng build --deploy-url "/yourAliasNameOnIIS"
de changer src chemin dansdist/index.html
.J'espère que cela aide!
--deployUrl
n'existe plus (je ne sais pas si elle l'a jamais été), il est maintenant--deploy-url
. En outre, il peut être utile d'utiliser des--base-href
de modifier la base de href. Le déploiement url commande modifie simplement le script src endroits.J'ai suivi cette approche, mais il a été d'obtenir des erreurs 404 sur toutes les css, js fichiers, etc.
Vous pouvez également faire ces étapes avec des feintes de projet? Je veux dire, pouvez-vous créer un nouveau vide angulaire du projet et de faire de ces étapes?
J'ai répondu à la question avec IIS supplémentaire de Ré-Écrire les règles qui a ajouté un peu plus de fonctionnalités: stackoverflow.com/a/47442941/558509
Que faire si je ne veux pas de l'héberger dans un répertoire virtuel? Que faire Si j'ai un autre site web construit pour elle? Aussi pouvons-nous en quelque sorte ne pas faire que de la base href changement?
OriginalL'auteur ulubeyn
Lorsque vous ouvrez les outils de dev de votre navigateur, vous auriez vu 404 messages lorsque l'application a été d'essayer de télécharger le js, css etc fichiers
Vous devez définir la base href dans index.html pour
<base href="./">
ce sera assurez-vous que la base de ref est par rapport à l'endroit où votre site web vit dans IIS.
Vous devez également utiliser hachage emplacement de la stratégie sinon, IIS va intercepter votre ng2 routeur URL changements et essayer de trouver un contrôleur/action pour l'URL.
sous les importations de votre application.le module.ts:
Je l'ai fait ces 2 étapes et tous fonctionne parfaitement sur Azure VM avec IIS. Le faisant de cette manière signifie aussi que vous n'avez pas à mettre votre SPA sur la racine et vous pouvez avoir plusieurs SPA tourne joyeusement à côté de l'autre (dans différents sites web sur IIS)
ajoutez à cela le web.config: <système.serveur> <réécrire> <règles> <nom de la règle="angulaire de la cli de routes" stopProcessing="true"> <correspondance url=".*" /> <conditions logicalGrouping="matchall peut"> <ajouter l'entrée="{REQUEST_FILENAME}" matchType="IsFile" nier="true" /> <ajouter l'entrée="{REQUEST_FILENAME}" matchType="IsDirectory" nier="true" /> </conditions> <type d'action="Réécrire" url="/" /> < article> </règles> </réécriture> </système.serveur>
OriginalL'auteur Jan Feyen
Pour moi, c'était très simple:
Ce qui la rend encore plus simple, vous n'avez pas besoin de modifier le index.html fichier:
OriginalL'auteur Dileep
J'ai essayé de le ci-dessous approche, il a travaillé.
"Copie de la dist du dossier fichiers puis de les coller dans le dossier racine du site web IIS (Ne pas copier le dossier et le mettre dans le dossier racine du Site web IIS, qui sera la cause d'un problème)". Pouvez-vous m'expliquer ce problème?
OriginalL'auteur Srini
J'ai appelé beaucoup de suggestion, ce qui a fonctionné pour moi a été ce lien
Une bonne explication pourquoi les choses doivent être configurés de façon différente pour des angles d'application sont clairement décrites ici. Suivi la procédure décrite dans le lien et ensuite j'ai ajouté une web.config dans le dossier des fichiers à l'emplacement ci-dessous les paramètres:
Les paramètres sont également décrites dans le lien ci-dessus.
Espérons que cela aide quelqu'un.
OriginalL'auteur Zaker
En plus de ulubeyn de la réponse qui a surtout travaillé pour moi, j'y ai ajouté mes propres IIS ré-écrire les règles pour permettre:
1) la première redirection à partir d' /dist alias
2) Javascript téléchargements de alias et
3) Angulaire de routage sur les alias
OriginalL'auteur samneric
pour ceux qui utilisent angulaire i18n, vous avez à construire l'application pour chaque langue et les mettre dans des dossiers séparés
et voici la config pour iis
OriginalL'auteur Fateh Mohamed
Vous pouvez le déployer sans Web.fichier de configuration comme ci-dessous,
Vous pouvez trouver
index.html
dans dist dossier à l'intérieur il trouverbase href
tagmaintenant changer son chemin en conséquence
Ex: si le déploiement de l'intérieur wwwroot
Ex: si le déploiement à l'intérieur d'un dossier wwwroot
OriginalL'auteur PrathapG