2016-12-22 3 views
0

Ich möchte eine ASP.NET MVC-Anwendung auf einem IIS-Server bereitstellen und alle erforderlichen Ressourcen über virtuelle Verzeichnisse importiert haben. Dies funktioniert mit jedem anderen Ordner, der in der Anwendung verwendet wird. AUSSER die bin/ordner. Wenn i Virtuelle-Verzeichnis versuchen, das BIN-Verzeichnis dann kann die Anwendung nicht gestartet:Binding bin als virtuelles Verzeichnis in IIS erstellt global.asax Fehler

Parser Error 

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not load type 'MyCompany.Services.Global'. 

Source Error: 


Line 1: <%@ Application Codebehind="Global.asax.cs" Inherits="MyCompany.Services.Global" Language="C#" %> 

Source File: /global.asax Line: 1 

Nun zum why-I-want-to-do-this:

Ich habe folgendes Szenario in meinem Unternehmen:

Wir haben eine ASP.NET MVC Website-Lösung. Es wird für 2 Kunden auf einem unserer Server bereitgestellt. Beide Kunden werden immer gleichzeitig bereitgestellt. Beide verwenden dieselbe Version. Aber beide verwenden unterschiedliche Konfigurationsdateien. (Web.config & a root-config.js für angular). \ Inetpub \ wwwroot \ curstomerA \ und c:

Struktur wie diese

c:\inetpub\wwwroot\ 
        + curstomerA\ 
          + bin\ 
          + Scripts\ 
          + Views\ 
          + (...) 
          + web.config 
          + root-config.js 
        + curstomerA\ 
          + bin\ 
          + Scripts\ 
          + Views\ 
          + (...) 
          + web.config 
          + root-config.js 

beide c wäre \ inetpub \ wwwroot \ curstomerB \ sind eigene Websites in IIS erstellt. sie haben unterschiedliche Anwendungspools und werden an verschiedenen Subdomains gebunden:

c: \ inetpub \ wwwroot \ curstomerA \ => customerA.myCompany.com

c: \ inetpub \ wwwroot \ curstomerB \ => customerB .mycompany.com

so was ich versuche zu tun ist

c:\inetpub\wwwroot\ 
        + curstomerA\ 
          + bin\ 
          + Scripts\ 
          + Views\ 
          + (...) 
          + web.config 
          + root-config.js 
        + curstomerA\ 
          + <bin> as virtualDirectory onto c:\inetpub\wwwroot\curstomerA\bin\ 
          + <Scripts> as virtualDirectory onto c:\inetpub\wwwroot\curstomerA\Scripts\ 
          + <Views> as virtualDirectory onto c:\inetpub\wwwroot\curstomerA\Views\ 
          + (...) [like above] 
          + web.config 
          + root-config.js 

es keine Zugriffsrechte Problem sein kann; Auf einem lokalen Rechner entspannte ich die Zugriffsrechte auf die Ordner und es funktionierte immer noch nicht.

jetzt ist meine Frage: Warum funktioniert das nicht mit BIN-Ordner? Was muss ich tun, damit dies funktioniert?

oder kann ich nur missverstehen, wofür virtuelle Verzeichnisse verwendet werden? (Anmerkung: Ich habe gelesen https://www.iis.net/learn/get-started/planning-your-iis-architecture/understanding-sites-applications-and-virtual-directories-on-iis)

+1

Es ist nicht wie erwartet funktioniert, weil das virtuelle Verzeichnis von IIS verwendet wird URL zu physischen Verzeichnissen entsprechen, aber der Web-Anwendung-Lookup für DLLs (in physikalischer directoris) im Ordner ist unten der Hauptordner, in dem sich web.config befindet. Es gibt Möglichkeiten, den Suchpfad in web.config [Angeben des Speicherorts einer Assembly] (https://msdn.microsoft.com/en-us/library/4191fzwb (v = vs.110) .aspx) zu ändern, jedoch bis zu Ich weiß, das funktioniert nur für Unterordner. –

+0

danke, dieser Kommentar hat mich auf den richtigen Weg zur Lösung dieses Problems gebracht! – schmendrick

Antwort

0

Ok, nachdem ich die Verbindung und verwandte Links lesen, die HG Sandhagen

wies darauf hin,

Es ist nicht wie erwartet funktionieren, weil das virtuelle Verzeichnis von IIS verwendet wird URL übereinstimmen zu physischen Verzeichnissen, aber die Webanwendung sucht nach dlls (in physical directoris) im Ordner bin unterhalb des Hauptordners, in dem sich web.config befindet. Es gibt Möglichkeiten, den Suchpfad in web.config zu ändern, indem Sie den Standort einer Assembly angeben, aber soweit ich weiß, funktioniert dies nur für Unterordner.

es scheint nicht möglich, weil es nur mit Unterordnern zu funktionieren scheint. Ich habe daher mein Problem gelöst, indem ich eine directory junction erstellt habe.

Der bin-Ordner verwendet jetzt diesen Symlink und die anderen Verzeichnisse, die ich verwende, sind virtuelle IIS-Verzeichnisse.

PS: Ich weiß jetzt, der Titel dieses Themas in einem Stackoverflow Frage Format wie sein sollte:

„Warum kann ich nicht erfolgreich bind‚ist \‘als virtuelles Verzeichnis in IIS“

Ich entschuldigt mich;)

Verwandte Themen