ASP.NET: file di configurazione personalizzato esterno in una directory virtuale - come fare?
-
07-07-2019 - |
Domanda
So che ci sono almeno due approcci per sfruttare il file web.config:
- usando l'attributo
configSource
che è stato introdotto in .NET 2.0 - ecco un buon post sul blog a riguardo. - L'attributo
file
del tag appSettings che ti consente di puntare a un file esterno con un percorso relativo. Descritto nella documentazione MSDN sull'elemento AppSettings .
Ora, il mio problema è che entrambi gli approcci funzionano bene solo per percorsi fisici . Ma devo indirizzare un file di configurazione che si trova in una directory virtuale .
Quale altro metodo posso usare per mettere le mie risorse di configurazione in una directory virtuale?
Nota: voglio farlo in questo modo, perché ho più istanze della mia applicazione web sullo stesso server (e quello su molti server). Per mantenere la distribuzione facile e pulita, voglio mantenere una directory per tutti i file (aspx, ascx, immagini, css, js ecc.) E puntare le app Web in IIS per diversi clienti (= domini, https ecc.) A questo directory singola. In ogni Web IIS avrei una directory virtuale chiamata " custom " che punta a una cartella diversa per ogni Web.
Aggiornamento: vorrei sottolineare che questa directory virtuale " custom " non è adatto a contenere un web.config ereditato - quel web.config sarebbe valido solo per la cartella personalizzata che non contiene file aspx / ascx.
Soluzione
Ho lo stesso scenario e dopo aver letto i tuoi post mi sono reso conto che asp.net non ti consentirà di farlo per vari motivi di sicurezza.
Pertanto mi sono rivolto al sistema operativo per trovare un equivalente alla funzione di collegamento soft di Linux che a sua volta mi ha portato alla Utilità di giunzione da sysinternals. Questo può creare una directory che è in realtà qualsiasi altra directory su quel volume e asp.net non può dire la differenza e così felice carica le sezioni di configurazione che non sono in realtà in una sottodirectory del tuo sito web. Funziona per me :)
Altri suggerimenti
Le directory virtuali possono essere impostate come applicazioni e puoi semplicemente posizionare un altro web.config lì.
Erediterà tutte le modifiche dalla configurazione principale e puoi aggiungere impostazioni personalizzate al suo interno.
Stavo cercando di fare la stessa cosa ma non ha funzionato, quindi ho deciso di fare il contrario, dato che sai che web.config può essere ereditato, quindi ho indicato IIS su una cartella contenente la configurazione del client (stringa di connessione , file percorso ecc.) e i file del sito Web li ho messi in una directory virtuale con il resto del webconfig (dove carica dll e altri file dell'applicazione necessari) Quindi, fondamentalmente, posso usare i file del sito Web per più client e client con la loro stringa di connessione al database e altre impostazioni client specifiche.