Application Web ASP.NET Core 2.1 de base.
Startup.cs
contient les éléments suivants:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseDefaultFiles(); app.UseStaticFiles(); app.UseMvc(); }
Dans ce scénario, lorsque j'essaie de parcourir n'importe quel fichier HTML dans le répertoire webroot ( ie project-dir / wwwroot), il n'est pas servi. Le répertoire webroot contient un fichier index.html
et un 2ème fichier HTML. Aucun ne peut être diffusé en tapant l'URL.
Si je change Startup.cs
pour inclure les fichiers par défaut comme ceci:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseStaticFiles(); app.UseMvc(); }
puis le fichier index.html
est servi. Même si je tape le nom de l'autre fichier HTML, j'obtiens le fichier index.html
(qui est conforme à la documentation). Donc, apparemment, le rédacteur d'URL invoqué par UseDefaultFiles ()
parvient à gérer cela correctement, mais pourquoi ne fonctionne-t-il pas par URL directe?
EDIT J'ai dit ci-dessus "quand j'essaye de naviguer vers n'importe quel fichier HTML dans la racine web" mais en fait je n'ai pas essayé "n'importe quel" fichier mais ceux sur lesquels je travaillais qui avaient des noms comme exports.html, index.html ou des fichiers dans un sous-dossier appelé "core". Voir ma réponse ci-dessous pour ce que j'ai trouvé.
3 Réponses :
Peut-être que le serveur IIS ne sert pas de fichiers JS, CSS et image (fichiers statiques). ça m'est arrivé dans un déploiement Essayez ceci
Windows 7
Windows Server 2008
Merci mais IIS peut bien servir les fichiers statiques. Curieusement, je peux servir des fichiers JS dans le même répertoire
UseStaticFiles ()
, sert spécifiquement le répertoire du projet wwwroot
seul. Vous pouvez personnaliser le (s) répertoire (s) à diffuser si vous le souhaitez.
Quand vous dites "webroot", je ne peux que supposer que vous parlez de la racine du projet, qui ne sera pas servie par défaut. L'appel de UseDefaultFiles ()
modifie quelque peu ce comportement pour permettre à des éléments tels que index.html
, etc. d'être servis automatiquement, mais ne couvre pas les fichiers statiques en général.
La meilleure chose à faire est de tout mettre dans wwwroot
. Tout ce qui s'y trouve sera automatiquement mappé à la racine du document lors de l'utilisation du middleware de fichiers statiques, donc wwwroot / index.html
sera disponible à https://example.com/index.html code>, et de même, toutes les ressources statiques telles que JS ou CSS seront également disponibles.
La réponse est aussi simple que surprenante:
Apparemment, ASPNetCore n'accepte pas certaines chaînes comme noms de dossier et de fichier.
Les valeurs interdites sont:
exports core