2015-08-06 49 views
7

Sto migrando un sito Web che è/sarà in esecuzione su IIS e userò le mappe di riscrittura per reindirizzare i vecchi URL ".asp" a un nuovo stile di URL. Per molte migliaia di URL non esiste un modello, quindi sembra che devo fare affidamento sulle mappe di riscrittura.Riscrivi mappe in IIS Rendi web.config troppo grande

Il mio problema è che il limite di dimensione di web.config predefinito è 250kb, e nel mio ambiente, non ho accesso per cambiarlo (come si può fare a livello di registro - se uno ha accesso).

Ho cercato di spostare la sezione rewriteMaps in un file esterno, ma i file esterni hanno anche il limite di dimensioni predefinito di 250 kg, quindi anche questo non funzionerà.

Sto cercando un altro modo per gestire questo ... Sono attualmente seduto a 242kb e ho più del doppio della quantità di mappatura del nuovo reindirizzamento da aggiungere.

Grazie in anticipo.

+0

Ciao. Sei riuscito a trovare una soluzione a questo problema? –

+0

@KristapsVilerts - Sfortunatamente no ... Ho riempito la mappa in modo capriccioso con i reindirizzamenti più trafficati (quindi sarebbero stati i più veloci) e tutto il resto è andato in una tabella REDIRECTS nel db ... SO, dopo la richiesta passa tutte le regole di riscrittura nel file, per default ha un determinato script. Una delle prime cose che lo script fa è controllare la tabella REDIRECTS, e se esiste una voce, faccio un reindirizzamento nel codice ... è più lento, ma la maggior parte delle cose nella tabella è lunga coda, e come ho detto, i reindirizzamenti più visitati sono ancora nel file. – GWR

+0

triste per sentirlo. Stiamo utilizzando SharePoint e abbiamo trovato una soluzione alternativa: il reindirizzamento di tutte le richieste in entrata al controllo ASHX personalizzato, in cui è stata effettuata la logica di reindirizzamento delle richieste in entrata personalizzate (senza limitazioni). –

risposta

1

Dato che sono in un ambiente condiviso, non c'era altra soluzione che spostarlo in un singolo file di configurazione esterno, che era di nuovo limitato a 250 KB.

ecco quello che ho fatto:

Ho riempito la mappa per Capicity con il più alto-trafficate reindirizza e, naturalmente, nessun gruppo di URL che potrebbero essere reindirizzati utilizzando un modello (in modo che sarebbe più veloce).

Per la restante coda lunga dei reindirizzamenti, li ho inseriti in una tabella REDIRECTS nel db ... SO, dopo che la richiesta ha passato tutte le regole di riscrittura nel file (e, naturalmente, non hit any), imposta di default la richiesta su un determinato script.Una delle prime cose che lo script fa è controllare la tabella REDIRECTS, e se esiste una voce, faccio un reindirizzamento nel codice ... è più lento, ma la maggior parte della roba nella tabella è lunga coda, e come ho detto, i reindirizzamenti più visitati sono ancora nel file. Questo ha funzionato bene per me finora e posso aggiungere tutti i reindirizzamenti che voglio ... ad es. se un titolo/url della pagina viene modificato, la mia area admin aggiunge automaticamente il reindirizzamento, ecc.

0

Il file Nativerd.dll utilizza il valore di questa chiave di registro per determinare la dimensione massima consentita, in KB, dei file Web.config. Il sistema di configurazione assume un valore predefinito di 250 KB in Windows Server 2008 e 100 KB nella versione di rilascio di Windows Vista.

Il motivo del limite di 250 KB è di ridurre gli attacchi per il caricamento di un file web.config di grandi dimensioni. È possibile modificare il limite modificando il valore superiore nel Registro di sistema:

HKLM\SOFTWARE\Wow6432Node\Microsoft\InetStp\Configuration\MaxWebConfigFileSizeInKB (REG_DWORD) 

See: Description of the registry keys that are used by IIS 7.0, IIS 7.5, and IIS 8.0

Un'altra opzione è quella di dividere il file web.config in più file più piccoli.

+0

Nella mia domanda, ho detto esplicitamente che non posso modificare il registro, quindi non è un'opzione, e ho anche notato che ho già spostato rewriteMaps su un file esterno, ma che ha anche il problema del limite di 250kb, quindi questa risposta non aiuta e non risponde alla domanda. Forse hai appena lasciato una risposta per avere la possibilità di ottenere la taglia. :( – GWR

-1

È possibile suddividere la configurazione in alcuni file diversi, come ha detto Neill.

Si avrà un file web.config principale in cui si farà riferimento ai file di configurazione secondaria aggiungendo un attributo configSource alle sezioni che si desidera suddividere in altri file.

Ad esempio, se si desidera dividere la sezione “appSettings” in un altro file, è necessario modificare la sezione appSettings nel file web.config per:

<appSettings configSource="appsettings.config" /> 

e nel appsettings.config file, dovresti aggiungere tutte le voci delle tue app come erano nel file web.config originale, per esempio;

<appSettings> 
    <add key="aspnet:RestrictXmlControls" value="true" /> 
    <add key="FeedCacheTime" value="300" /> 
    <add key="FeedPageUrl" value="/_layouts/15/feed.aspx?" /> 
    <add key="FeedXsl1" value="/Style Library/Xsl Style Sheets/Rss.xsl" /> 
    <add key="aspnet:AllowAnonymousImpersonation" value="true" /> 
</appSettings> 

Ovviamente con le mappe di riscrittura invece.

+1

Nella mia domanda, ho notato che ho già spostato rewriteMaps in un file esterno, ma che ha anche il problema di limite di 250kb, quindi questa risposta non aiuta e non risponde alla domanda. Per quanto posso dire, non è possibile avere più di un file rewriteMaps esterno. – GWR