Comment demandez-vous des fichiers .html statiques sous le dossier ~ / Views dans ASP.NET MVC?

Je veux pouvoir demander des fichiers .html statiques situés dans le dossier ~/Views . Selon la documentation, le système de routage vérifie si une URL correspond à un fichier de disque avant d’évaluer les routes de l’application.

Mais lorsque je demande le fichier, une erreur 404 survient.

Mon fichier est situé dans le dossier ~ / Views. L’URL est la suivante: http://[localhost]/Views/HtmlPage1.html

Qu’est-ce que j’ai raté?

Je veux pouvoir demander des fichiers .html statiques situés dans le dossier ‘~ / Views’.

Vous ne pouvez pas Il y a un fichier web.config dans ce dossier qui interdit explicitement l’access à n’importe quel fichier. Si vous voulez pouvoir accéder aux fichiers du client, ces fichiers ne doivent pas être placés dans le dossier Views qui a une signification particulière dans ASP.NET MVC.

Vous pourriez avoir un dossier ~/Static où vous pouvez placer vos fichiers HTML. Et puis y accéder comme ça:

 http://example.com/yourapplicationname/static/foo.html 

Pour autoriser des fichiers tels que js et html dans le dossier Views, modifiez le fichier web.config dans views-Folder:

        

Je veux pouvoir demander des fichiers .html statiques situés dans le dossier ~ / Views.

Bien, vous pouvez. La réponse marquée n’est pas tout à fait correcte, bien qu’elle donne une solution.

Le raisonnement dans la réponse marquée est correct, web.config (paramètre BlockViewHandler à spécifier) ​​dans le dossier Views empêche l’access direct aux fichiers. Il est là pour sécuriser les vues dans Asp.Net MVC. Mais si vous posez une question sur la dissortingbution directe de ces fichiers, vous avez probablement une raison valable de le faire, comme utiliser des vues partielles AngularJS (comme dans notre cas) où nous ne voulons pas dupliquer le dossier des vues avec des noms étranges.

Voici donc un réglage très simple que vous pouvez faire dans le fichier web.config situé dans le dossier Views, sans compromettre la sécurité de vos vues asp.net mvc. Cela sécurisera les fichiers .cshtml comme d’habitude, mais laissez vos fichiers .html seuls.A

Change ça

  

–à–

  

Une autre option consiste à insérer une méthode d’action dans l’un des contrôleurs souhaités pour diffuser le fichier HTML.

 public ActionResult MyHtml() { var result = new FilePathResult("~/Views/HtmlPage1.html", "text/html"); return result; } 

Accédez au HTML en tant que http: // yoursite / controller / MyHtml . Vous pouvez étendre cette méthode d’action pour accepter le nom de fichier html en tant que paramètre method / queryssortinggn et rendre le fichier au moment de l’exécution, par exemple, quelque chose comme ça.

  public ActionResult MyHtml(ssortingng htmlPageName) { var result = new FilePathResult($"~/Views/{htmlPageName}.html", "text/html"); return result; }