J'ai un ASP.Net MVC existant hébergé dans IIS qui est étendu / remplacé en utilisant un SPA réactif qui doit être placé sous le site dans IIS dans une application.
Cela a été fait car il existe de nombreuses instances déployées pour plusieurs clients qui ne peuvent pas être segmentées pour des raisons commerciales et le système existant est en web-forms et en raison de sa construction, il n'y a pas de désir d'ajouter le SPA au projet, il a été décidé que la sous-application serait le moyen le plus facile de déployer la nouvelle fonctionnalité - ne voulait pas d'un autre projet MVC ou rendre le projet WebApi serveur les pages statiques en raison d'autres personnalisations liées au client qui doivent être prises en compte.
Le SPA communique avec un nouveau backend WebApi qui est lui-même une application sous l'application réactif.
Pour aider à visualiser, cela ressemble à ceci :
Maintenant, tout cela fonctionne, le SPA peut être chargé depuis l'application parent simplement par un href normal et le SPA communique joyeusement avec le backend WebApi.
Où j'ai rencontré un mur est de trier la règle de réécriture d'URL IIS afin que si l'utilisateur appuie sur F5 dans le SPA, IIS renverra le index.html du SPA, puis le routage côté client (react router v4) se chargera de rendre les composants corrects.
La règle de réécriture d'URL est définie dans l'application v5.
J'ai suivi les conseils sur des questions comme celle-ci et celle-ci et si le SPA réactif est à la racine du site, tout fonctionne parfaitement, mais dès que je passe à la sous-application, je reçois toujours une réponse 404 qui indique que l'URL complète ne peut pas être trouvée, par exemple lors de la demande d'URL localhost/v5/documents
IIS tente de trouver un fichier/répertoire v5/documents qui n'existe pas.
Pour sortir le système existant de l'équation, j'ai déployé le site dans un nouveau dossier où le site de niveau supérieur n'a pas de contenu et le site réactif est dans l'application v5 et le webapi dans le dossier api - encore une fois tout fonctionne.
J'ai essayé plusieurs modèles pour la correspondance, le modèle actuel que j'utilise est .*/v5/?.*
que le fonctionnement du modèle de test dans le gestionnaire IIS me dit correspond aux URL que j'attends par exemple l'URL de localhost/v5/documents
devrait correspondre mais en pratique ne le fait jamais.
J'ai trouvé ce lien sur la configuration angulaire et ce post de Rick Strahl qui aborde la création des règles mais sans succès.
La configuration complète que j'utilise en ce moment est
J'ai également installé le suivi des requêtes échouées, mais quand je regarde les journaux, je ne vois pas la réécriture d'URL être déclenchée pour la demande, c'est pourquoi elle essaie ensuite de trouver le fichier/répertoire inexistant.
J'ai téléchargé le journal du suivi des requêtes échouées ici
J'utilise IIS 10.0.15063.0 sur Windows 10, le site réactif a été créé avec create-react-app (je teste en utilisant une compilation de production et non webpackdevserver) et le projet WebApi est en .Net Framework 4.7