web-dev-qa-db-fra.com

La page MVC .NET Core ne s'actualise pas après les modifications

Je construis un MVC .NET Core sur la dernière version 2.2. J'ai un problème lorsque j'apporte des modifications au fichier CSHTML et actualise la page, mes modifications ne sont pas reflétées dans le navigateur. Je dois redémarrer le projet pour voir mes modifications. Cela se produit depuis un certain temps maintenant, donc je ne sais pas exactement quel changement a causé ce problème.

J'ai essayé d'utiliser le "Empty Cache and Hard Reload" du chrome ainsi que d'autres navigateurs en vain. Cela se produit sur Windows et Mac en utilisant à la fois Visual Studio pour Mac et VS Code

Dans un projet .Net Core par défaut, cela fonctionne bien, donc ce doit être quelque chose dans mon projet qui a changé en cours de route. Je me demande par où commencer pour déboguer ce problème? J'ai essayé de commenter presque tout dans mon Startup.cset Program.cs sans résolution.

15
kevskree

Il y a eu un changement dans ASP.NET Core 2.2, semble-t-il (et je ne trouve aucune annonce concernant ce changement). Si vous n'êtes pas exécuté explicitement dans l'environnement "Développement", les vues Razor sont compilées et vous ne verrez aucune modification apportée au .cshtml

Vous pouvez cependant désactiver cela en utilisant une configuration dans votre classe de démarrage comme suit.

services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);
18
Chris Aitchison

Dans ASP.NET Core 3.0 (toujours dans un aperçu!) RazorViewEngineOptions.AllowRecompilingViewsOnFileChangen'est pas disponible (ou pas accessible? - n'a pas eu le temps de vérifier).

Surpris que l'actualisation d'une vue pendant le fonctionnement de l'application ne fonctionnait pas, j'ai découvert la solution suivante (attention, les choses pourraient changer dans la version!):

  1. Ajouter Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation package NuGet au projet
  2. Ajoutez ce qui suit dans Startup.cs:

    services.AddControllersWithViews (). AddRazorRuntimeCompilation () ;

Voici le explication complète pour les curieux ...

HTH

6
Alexander Christov

Utilisation de .net core 2.2 exécutant l'application avec la commande dotnet watch run le projet est redémarré après chaque modification

2
tramada

Ci-dessous m'a aidé lorsque les vues étaient dans un projet distinct.

if(HostingEnvironment.IsDevelopment()){ // only in development (optional)
    services.AddMvc().AddRazorOptions(o => {
        o.FileProviders.Add(new PhysicalFileProvider(PATH_TO_PROJECT));
    });
}
1
smoq

Êtes-vous absolument sûr d'utiliser 2.2? Vérifiez votre csproj car il pourrait s'agir de ce bogue https://github.com/aspnet/Razor/issues/2466 Vous pouvez essayer de désactiver RazorCompileOnBuild plus d'informations https: //docs.Microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-2.1#properties

0
Wanton