2015-08-06 40 views
7

Ich migriere eine Website, die auf IIS ausgeführt wird/wird, und ich benutze Umschreibkarten, um 301 alte ".asp" -URLs in einen neuen URL-Stil umzuleiten. Für viele tausend URLs gibt es kein Muster, daher scheint es, dass ich Karten neu schreiben muss.Karten in IIS neu erstellen Machen Sie web.config zu groß

Mein Problem ist, dass die Standardgröße web.config 250kb ist, und in meiner Umgebung habe ich keinen Zugriff, dies zu ändern (wie auf der Registrierungsebene getan werden kann - wenn man Zugriff hatte).

Ich habe untersucht, den RewriteMaps-Abschnitt in eine externe Datei zu verschieben, aber die externen Dateien haben auch die Standardgröße von 250kg, also wird dies auch nicht funktionieren.

Ich bin auf der Suche nach einer anderen Möglichkeit, damit umzugehen ... Ich bin bei 242kb derzeit sitzen und habe über doppelt so viel von alt zu neu Redirect Mapping hinzufügen.

Vielen Dank im Voraus.

+0

Hi. Haben Sie eine Lösung für dieses Problem gefunden? –

+0

@KristapsVilerts - Leider nein ... Ich füllte die Karte mit den am höchsten frequentierten Redirects (so würde sie am schnellsten sein), und der ganze Rest ging in eine REDIRECTS-Tabelle in der db ... SO, nach der Anfrage Übergibt alle Umschreibungsregeln in der Datei, standardmäßig wird ein bestimmtes Skript verwendet. Eines der ersten Dinge, die das Skript tut, ist die REDIRECTS-Tabelle zu überprüfen, und wenn ein Eintrag existiert, führe ich eine Umleitung im Code aus ... es ist langsamer, aber das meiste in der Tabelle ist ein langer Schwanz, und wie gesagt Die meist besuchten Weiterleitungen befinden sich immer noch in der Datei. – GWR

+0

traurig, das zu hören. Wir verwenden SharePoint und haben eine Problemumgehung gefunden - um alle eingehenden Anfragen an das benutzerdefinierte ASHX-Steuerelement umzuleiten, wo wir eine benutzerdefinierte Umleitlogik für eingehende Anfragen erstellt haben (ohne Einschränkungen). –

Antwort

1

Da ich in einer gemeinsamen Umgebung bin, gab es keine andere Lösung, als es in eine einzige externe Konfigurationsdatei zu verschieben, die wiederum auf 250 KB begrenzt war.

So, hier ist das, was ich getan habe:

ich die Karte gefüllt bis capicity mit dem höchsten frequentierten umleitet und natürlich alle Gruppen von URLs, die mit einem Muster umgeleitet werden könnten (so würden sie am schnellsten sein).

Für die 100k verbleibenden Long-Tail der Weiterleitungen, ich habe sie in eine REDIRECTS-Tabelle in der Datenbank ... SO, nachdem die Anfrage alle Rewrite-Regeln in der Datei übergeben (und natürlich nicht hit any), wird die Anfrage standardmäßig auf ein bestimmtes Skript gesetzt.Eines der ersten Dinge, die das Skript macht, ist die REDIRECTS-Tabelle zu überprüfen, und wenn ein Eintrag existiert, führe ich eine Umleitung im Code durch ... es ist langsamer, aber die meisten Sachen in der Tabelle sind langer Schwanz, und wie gesagt Die meist besuchten Weiterleitungen befinden sich immer noch in der Datei. Dies hat für mich bisher gut funktioniert, und ich kann so viele Weiterleitungen hinzufügen, wie ich möchte ... z. Wenn ein Seitentitel/eine URL bearbeitet wird, fügt mein Adminbereich automatisch die Umleitung usw. hinzu.

0

Die Datei Niderd.dll verwendet den Wert dieses Registrierungsschlüssels, um die maximal zulässige Größe (in KB) der Web.config-Dateien zu ermitteln. Das Konfigurationssystem nimmt einen Standardwert von 250 KB in Windows Server 2008 und 100 KB in der Release-Version von Windows Vista an.

Der Grund für die Begrenzung auf 250 KB ist die Reduzierung von Angriffen für das Hochladen einer großen web.config-Datei. Sie können den oberen Wert in der Registrierung, die die Grenze ändern durch Änderung:

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

Eine weitere Option ist Ihre web.config-Dateien in mehrere kleinere Dateien aufteilen.

+0

In meiner Frage habe ich ausdrücklich gesagt, ich kann die Registrierung nicht bearbeiten, so dass dies keine Option ist, und ich habe auch bemerkt, dass ich rewriteMaps bereits in eine externe Datei verschoben haben, aber dass es auch das 250kb-Limit-Problem hat, so diese Antwort hilft nicht und beantwortet die Frage nicht. Vielleicht haben Sie einfach eine Antwort auf eine Chance gegeben, um das Kopfgeld zu bekommen. :( – GWR

-1

Sie können Ihre Konfiguration in ein paar verschiedene Dateien aufteilen, wie Neill sagte.

Sie haben eine Hauptdatei web.config, in der Sie auf Unterkonfigurationsdateien verweisen, indem Sie den Abschnitten, die Sie in andere Dateien aufteilen möchten, ein ConfigSource-Attribut hinzufügen.

Zum Beispiel, wenn Sie möchten, dass die im Abschnitt „AppSettings“ in einer anderen Datei teilen, würden Sie den Abschnitt appSettings ändern in Ihrer web.config-Datei:

<appSettings configSource="appsettings.config" /> 

und in der appsettings.config Datei, würden Sie alle Ihre Appsettings-Einträge hinzufügen, wie sie in der ursprünglichen web.config-Datei waren, zum Beispiel;

<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> 

Offensichtlich mit den Karten neu schreiben statt.

+1

In meiner Frage habe ich festgestellt, dass ich rewriteMaps bereits in eine externe Datei verschoben habe, aber dass es auch das 250kb Limit Problem hat, so dass diese Antwort nicht hilft und die Frage nicht beantwortet. So weit ich sagen kann, Es ist nicht möglich, mehr als eine externe rewriteMaps-Datei zu verwenden. – GWR