2009-08-05 1 views
1

Nach ziemlich viel Suche ich denke, meine Situation ist anders genug, ich muss tatsächlich eine Frage stellen!ASP.NET VirtualDirectory App und Website/bin

Ich habe eine Website für den öffentlichen Verbrauch und eine Wartungs-Website für die Daten in einer virtuellen Wurzel unter der Website. Ich möchte, dass sie beide den gleichen/bin-Ordner verwenden, aber ich kann das nicht zur Arbeit bringen. Der virtuelle Stamm hat unterschiedliche (restriktivere) IP-Zugriffssteuerungen. IIS sieht dies:

www.abc.com hat eine C: \ Website \ bin und C: \ website \ web.config.

Ich möchte/Maintennace auch C: \ Website \ bin verwenden. Sie scheinen web.configs zu "kaskadieren" - C: \ Website \ web.config definiert einige Dinge und verweist auf Assemblys in seinem bin-Ordner. Wenn/Maintenance gestartet wird, erhalte ich Fehler, weil ich die in C: \ Website \ web.config referenzierten Assemblies nicht auflösen kann. C: \ Maintenance \ web.config wird ebenfalls verarbeitet.

IIS6, ASP.NET 3.5, Win2k3

Ist das machbar?

+0

Also www.abc.com/Maintenance ist ein virtueller Ordner auf C: \ Website? – PhilPursglove

+0

@Phil: Nein,/Maintennace zeigt auf c: \ Wartung – n8wrl

Antwort

0

Was ich getan habe, war Umzug/Wartung unter C: \ Website und loszuwerden, das virtuelle Verzeichnis insgesamt. Dies ermöglicht es ihnen, das gleiche/bin zu teilen und ich lande trotzdem mit den gleichen URLs.

1

Sie können DLL-Dateien von C: \ Maintenance \ web.config abmelden. Ich habe das gemacht, als ich auf einer DotNetNuke root-Website ein sunviral-Verzeichnis erstellt habe. wenn Sie ein HTTP-Modul in Ihrem C zum Beispiel verweisen: \ Website \ web.config:

<httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</httpModules> 

können Sie den Verweis aus C entfernen: \ Wartung \ web.config:

<httpModules> 
     <remove name="ScriptModule"/> 
</httpModules> 
+0

Ja, Sie können. Aber ich habe zum Beispiel einen HTTP-Handler in c: \ website \ web.config, der in der DLL lebt, die sich in C: \ website \ bin befindet. Wenn/Maintance hochfährt, erhalte ich einen Fehler bei der Verarbeitung von c: \ website \ web.config, der den assembly, in dem der Handler lebt, nicht finden kann. – n8wrl

+0

Dann entferne alle HTTP Handler: \t \t \t Veröffentlichen Sie Ihre c: \ website \ web.config, und ich werde Ihnen zeigen, wie Sie es reinigen. –

0

Sie müssen eine separate Ablage in Ihrem virtuellen Verzeichnis/Ihrer virtuellen App erstellen.

+0

Das ist, was ich seit einiger Zeit gemacht habe, aber es bedeutet, dass ich Kopien der DLLs von website/bin behalten muss, damit website/web.config Verarbeitung funktioniert, wenn/Maintennace aktiviert ist. – n8wrl

+0

Lassen Sie es mich wissen, wenn Sie einen besseren Weg finden, neben der GAC, denn das ist ein Schmerz in den Arsch. – ScottE

1

Ich bin etwas unklar, was das Ziel von Ihrer Frage ist, aber wenn Sie suchen, andere Verzeichnisse außerhalb des bin-Verzeichnisses für Assemblyreferenzen für Ihre Wartungswebsite zu verarbeiten, können Sie möglicherweise davon Gebrauch machen Das Element <probe> der Laufzeitkonfiguration web.config.

Sie können zusätzliche Pfade zum Auflösen von Referenzen angeben, anstatt nur "bin". Da dies to this question asked earlier today sehr ähnlich ist, werde ich es nur verlinken, damit Sie die Beispiele und Antworten dort überprüfen können. Hoffentlich hilft es dir.

+0

@womp: Danke für die Links. Meine Absicht ist einfach - ich möchte die gleiche Codebasis für eine öffentliche Website und Datenpflege über eine eingeschränkte URL verwenden. Mit virtuellen Verzeichnissen kann ich den IP-Bereich für die Annahme von Anfragen einschränken. Eine virtuelle Wurzel mit diesen Einschränkungen unter der Website schien also ein logischer Weg zu sein. Jetzt die Codebasis teilen ... – n8wrl

Verwandte Themen