1
votes

ASP.NET Core - Impossible de servir les fichiers statiques - uniquement par défaut

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é.


0 commentaires

3 Réponses :


0
votes

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

  1. Cliquez sur Démarrer, accédez au Panneau de configuration et sélectionnez Programmes.
  2. Sous Programmes et fonctionnalités, choisissez Activer ou désactiver les fonctionnalités Windows. La boîte de dialogue Fonctionnalités Windows s'affiche.
  3. Développez l'élément de niveau racine Internet Information Services, développez World Wide Web Services, puis développez Common HTTP Features. Sélectionnez le contenu statique.

Windows Server 2008

  1. Cliquez sur Démarrer, sélectionnez Tous les programmes
  2. Choisissez Outils d'administration, puis sélectionnez Gestionnaire de serveur.
  3. Dans le volet de navigation, sélectionnez Rôles, puis choisissez Ajouter des rôles.
  4. Dans la fenêtre Avant de commencer, cliquez sur Suivant.
  5. Accédez à la fenêtre Sélectionner les rôles du serveur> Serveur Web (IIS)> Suivant> Suivant.
  6. Dans la fenêtre Sélectionner un service de rôle, développez Fonctionnalités HTTP courantes puis ajoutez du contenu statique

1 commentaires

Merci mais IIS peut bien servir les fichiers statiques. Curieusement, je peux servir des fichiers JS dans le même répertoire



4
votes

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, et de même, toutes les ressources statiques telles que JS ou CSS seront également disponibles.


0 commentaires

0
votes

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


0 commentaires