Was sind mögliche Nachteile einer IIS 7-Site mit einer NTFS-Junction als Webstamm?

13

Ich versuche, einen Weg zu finden, um ASP.NET-Code mit möglichst geringer Störung der Site bereitzustellen. Ein Gedanke war es , die Seite einrichten, um von einem NTFS - Übergang serviert werden , c:\www\example.comwo

c:\www\example.com -> c:\www\example.com_r1234

Wenn dann neuer Code bereitgestellt wird, wird er kopiert c:\www\site.com_r1235und die Junction neu ausgerichtet

c:\www\example.com -> c:\www\example.com_r1235

Meine Frage ist also, welche Auswirkungen dies auf aktuelle Anforderungen in IIS haben könnte. Welche anderen Nachteile könnte dies unter dem Gesichtspunkt der Reaktion von IIS auf die Änderung haben (falls vorhanden)? Wird dies für den Endbenutzer der Website so nahtlos sein, wie ich hoffe?

(Ich habe überlegt, das Stammverzeichnis der Website über die Befehlszeile zu ändern. Die Idee, IIS neu zu konfigurieren, gefällt mir jedoch nicht, da möglicherweise unnötige App-Domänen oder App-Pool-Abwanderungen auftreten, über die ich jedoch nicht viel weiß Was passiert, wenn der konfigurierte physische Pfad eines Standorts unter Last geändert wird?

Um es klar auszudrücken, meine einzige Sorge ist die Erfahrung meiner Endbenutzer. Mein Ziel ist es, Störungen für sie zu vermeiden, nicht Bequemlichkeit für mich.

Jayrdub
quelle
1
Setzen Sie das Web-Stammverzeichnis zurück. Jegliches Recycling (ich glaube nicht, dass dies der Fall wäre) und Neustarts des App-Pools sind dann a) wahrscheinlich nicht "unnötig" und b) helfen dem Arbeitsprozess, eine realistische Vorstellung über den Zustand seines Inhalts und seiner Caches zu erhalten. Es ist eine clevere Lösung, aber clever heißt selten stabil. Finden Sie heraus, was die Mehrheit der Menschen tut, und machen Sie das dann.
TristanK
Das ist eine großartige Frage, auf die ich schon lange eine Antwort gesucht habe. Alles, was ich je gesehen habe, ist entweder eine rollierende Bereitstellung unter einem Load Balancer (den ich nicht habe) oder eine einfache Kopie / SVN von Dateien in der Webroot (den ich nicht mag).
Jayrdub
1
Versuchen Sie also zunächst, das Web-Stammverzeichnis neu auszurichten.
TristanK

Antworten:

3

eine Möglichkeit, ASP.NET-Code mit möglichst geringer Störung der Site bereitzustellen.

Anscheinend sind dieses Ziel und Ihre vorgeschlagene Lösung nicht aufeinander abgestimmt, da für jede Bereitstellung eine Reihe zusätzlicher Arbeiten oder Skripts erforderlich sind.

Eine Sache, die ich gesehen habe, ist die Installation eines SVN-Clients auf dem Produktionsserver, und der Produktionsstandort ist eine ausgecheckte Kopie eines bestimmten Standorts / Zweigs in der Quellcodeverwaltungsstruktur. Auf diese Weise müssen Sie zumindest nur geänderte Dateien für neue Bereitstellungen aktualisieren.

Joel Coel
quelle
Dieser Netzwerkbetrieb würde dazu führen, dass die Artefakte des Standorts viel zu lange nicht eindeutig sind. Genau diese Situation versuche ich zu vermeiden. Ich versuche, die Zeit zu eliminieren, in der Assemblys unter der Webroot unterschiedliche Versionen haben.
Jayrdub
1
Die "zusätzlichen Arbeiten und Skripte" sind kein
Problem
Ich denke, um fair zu sein, Unruhe und Arbeit sind nicht wirklich dasselbe
Mark Henderson
Die Störung des Endbenutzers meiner Website ist das, worauf ich mich beziehe
Jayrdub
2

Ich habe hinter meinem Webstamm einen Ordner namens erstellt _images

C:\DEV\_IMAGES

kopierte dann eine Reihe von GIF-Dateien hinein. Ich habe dann einen symbolischen NTFS-Link in meinem Root erstellt

C:\DEV\PROJECT\ROOT mklink /D webimages ..\_images

In Visual Studio 2010 wird "Show All Files" (Alle Dateien anzeigen) aktualisiert und die neuen "Webimages" in mein Projekt eingefügt. Ich kann jetzt auf ...

img src='webimages/icon.gif'

Wenn ich die App starte, funktioniert sie auch auf meinem lokalen Computer einwandfrei.

Ich werde nicht wissen, ob es auf dem realen Server (IIS 7) funktioniert, bis die Infrastruktur dies in den Griff bekommt. Weiß jemand, warum dies in der Produktion nicht funktioniert?

Ich denke, solange die Rechte vorhanden sind, sollte dies der Fall sein, und wenn ja, was für eine großartige Möglichkeit, die Freigabe von Ordnern (aller Art) zwischen Web-Apps zu vereinfachen.

Ich habe noch nicht versucht, dies in TFS auszudrücken. Wenn also jemand Feedback dazu hat, lass es uns wissen!

Greg
quelle
0

Dies funktioniert nicht, da IIS möglicherweise glaubt, dass sich die Datei web.config durch ein anderes Programm geändert hat. IIS wird wahrscheinlich eine System.Configuration.ConfigurationErrorsException-Ausnahme auslösen. Ich würde vorschlagen, eine Art Skript zu schreiben, um nur das Ausgangsverzeichnis der Site zu ändern.

Cory
quelle