Die Ansicht wird nach der Änderung nicht aktualisiert

8

Ich habe dieses frustrierende Problem. Ich ändere Text in einer Rasiereransicht (cshtml), Start without Debugging , aktualisiere (Strg + F5) den Browser, aber nichts passiert. Der seltsame Teil ist, dass, wenn ich den Rückgabewert eines Controllers (zB return Ok("test"); ) oder eine enthaltene statische Datei (wie CSS) ändere, die Änderung sichtbar ist. Die Rasiereransicht wird nur aktualisiert, wenn ich den Start abbringe und das Debugging jedes Mal stoppe.

Hier sind Dinge, die ich schon versucht habe:

  • Stellen Sie sicher, dass Detect when file is changed outside the environment aktiviert ist.
  • On run, when projects are out of date ist Always build .
  • Ich habe dies an Edge, Chrome und Firefox mit und ohne Hard-Refresh versucht.
  • Neustart von Visual Studio-Ziffern.
  • Reinigungs- / Umbau-Lösung.
  • Dies bei neuen Vorlageprojekten tun.

P.S. Ich sehe, es gibt viele ähnliche Fragen, aber keine der Antworten scheint mein Problem zu lösen.

Aktualisieren

Dies scheint ein Problem in einem viel größeren Maßstab zu sein. Wenn ich:

  1. Erstellen Sie in der Elternansicht einen erforderlichen Rasierklingenabschnitt wie diese @RenderSection("css", required: true) .
  2. Implementieren Sie das Rendering nicht in der untergeordneten Ansicht.
  3. Ich (offensichtlich) bekomme die InvalidOperationException: The following sections have been defined but have not been rendered by the page at 'bla\bla\bla':css .
  4. Dann setze ich es um.
  5. Speichern, Strg + F5 in Firefox. Der Fehler besteht weiterhin.

An diesem Punkt ist VS 2015 praktisch unbrauchbar, weil Sie nicht wissen, ob Sie tatsächlich etwas vermissen oder es VS ausmacht

    
Crossfire 29.01.2016, 13:09
quelle

5 Antworten

11

Ich hatte dieses Problem vorher. Mein Fall war ich Windows 10 VM Parallel auf Macbook Pro laufen, und die Projektdateien sind in freigegebenen Ordner mit Mac OS.

Wenn jemand den gleichen Fall wie ich hat, verschieben Sie das Projekt in ein nicht freigegebenes Verzeichnis wie C: \ wird das Problem beheben.

    
dexcell 05.05.2017 06:28
quelle
3

Folgendes scheint unter der Haube zu passieren: Das .net-Framework kompiliert Ihren Rasierer in eine Maschinenform (DLL) und führt diese aus. Anschließend überwacht es Ihren Webordner, um nach Änderungen zu suchen. Wenn Änderungen erkannt werden, wird der Rasierer erneut kompiliert und die neue DLL ausgeführt.

In Ihrem Fall scheint etwas im Zusammenhang mit den Änderungen der Überwachungsdatei zu versagen. Es funktioniert immer noch bei einem vollständigen Neustart, da das Kompilieren dann auch ohne Erkennung von Dateiänderungen erfolgt. Häufige Gründe sind:

  1. Sie liefern die Dateien über das Netzwerk (ein NAS oder eine Dateifreigabe), die es Ihrem PC nicht erlauben, Änderungen zu überwachen. Dies kann ein fehlendes Feature (wie eine Nicht-SMB-Dateifreigabe) oder ein Berechtigungsproblem sein. Dies ist in Web-Farm-Szenarien sehr häufig, aber wahrscheinlich nicht in Ihrem Dev-Szenario.
  2. Etwas anderes schließt bereits die Dateien (Berechtigungen?), die verhindern, dass dieser Überwachungs-Hook die Dateien festhält.

Um zu bestätigen, dass dies das Problem ist, empfehle ich, nur die Datei web.config zu bearbeiten (ein Zeichen hinzufügen / entfernen) und zu sehen, ob das erneute Laden erfolgreich ist - nur um zu beweisen, dass es ein Problem ist, das nicht neu kompiliert wird -Debugging-Problem. Angenommen, dies ist der Fall, und angenommen, es handelt sich nicht um ein NAS, würde ich empfehlen, dem Ordner vorübergehend die Berechtigung "Everyone - Everything" zu geben, um zu sehen, ob es dann funktioniert, und dann die Berechtigungen nach und nach wieder zu reduzieren.

    
iJungleBoy 09.02.2016 13:29
quelle
3

überprüfe deine web.config und stelle sicher, dass du fcnMode="Disabled" oder fcnMode="NotSet"

nicht hast

verwenden

%Vor%

oder

%Vor%
  • Standard Für jedes Unterverzeichnis erstellt die Anwendung ein Objekt, das das Unterverzeichnis überwacht. Dies ist das Standardverhalten.
  • Deaktiviert Die Dateiänderungsbenachrichtigung ist deaktiviert.
  • NotSet Die Dateiänderungsbenachrichtigung ist nicht festgelegt, daher erstellt die Anwendung ein Objekt, das jedes Unterverzeichnis überwacht. Dies ist das Standardverhalten.
  • Single Die Anwendung erstellt ein Objekt zur Überwachung des Hauptverzeichnisses und verwendet dieses Objekt zur Überwachung jedes Unterverzeichnisses.

FcnMode-Aufzählung

    
Moes 13.09.2016 03:26
quelle
1

Wenn Sie auf einem Mac mit einer Parallels WM arbeiten und Ihr Projekt sich auf Ihrem Mac-Volume befindet, können Sie dies mit chmod beheben.

%Vor%     
Janus Kamp Hansen 22.11.2017 11:52
quelle
0

Hatte das gleiche Problem. Nach dem Debuggen für eine lange Zeit und dem Versuch, fast alles auszuprobieren, fanden wir heraus, dass jemand die Datei in Visual Studio von einem Ordner in einen anderen verschoben und in TFS eingecheckt hatte. Die Projektdatei wurde also aktualisiert, aber die Originaldatei war noch auf der Festplatte vorhanden. Also hat mein lokaler IIS die alte Datei und nicht die neue Datei am neuen Ort gerendert.

Das war frustrierend, ja.

    
VeldMuijz 19.04.2017 07:26
quelle