2015-08-06 42 views
7

Przeprowadzam migrację witryny internetowej, która jest/będzie działała w IIS i będę używał map ponownego zapisu do 301 przekierowania starych ".asp" adresów URL do nowego stylu adresu URL. Dla wielu tysięcy adresów URL nie ma wzoru, więc wydaje mi się, że muszę polegać na mapach do przepisywania.Przepisz mapy w IIS Spraw, aby web.config był zbyt duży.

Mój problem polega na tym, że domyślny limit rozmiaru web.config to 250kb, aw moim środowisku nie mam dostępu, aby to zmienić (co można zrobić na poziomie rejestru - jeśli ktoś miał dostęp).

Przyjrzałem się przeniesieniu sekcji PrzepisywanieMap do pliku zewnętrznego, ale pliki zewnętrzne mają domyślny limit 250kg, więc to również nie zadziała.

Szukam innej metody radzenia sobie z tym ... Obecnie siedzę w trybie 242 kb i mam ponad dwa razy więcej starych do nowych mapowań przekierowań.

Z góry dziękuję.

+0

Wit. Czy udało Ci się znaleźć rozwiązanie tego problemu? –

+0

@KristapsVilerts - Niestety nie ... Zapełniłem mapę, aby uzyskać najwyższe trafności z przekierowaniami o największej liczbie odwiedzin (aby były najszybsze), a cała reszta znalazła się w tabeli REDIRECTS w db ... SO, po żądaniu przekazuje wszystkie reguły przepisywania w pliku, domyślnie jest to określony skrypt. Jedną z pierwszych rzeczy, które robi skrypt, jest sprawdzenie tabeli REDIRECTS, a jeśli wpis istnieje, wykonuję przekierowanie w kodzie ... jest wolniejszy, ale większość rzeczy w tabeli to długi ogon, i jak już powiedziałem, najczęściej odwiedzane przekierowania są nadal w pliku. – GWR

+0

smutno to słyszeć. Używamy SharePoint i znajdujemy obejście - przekierowujemy wszystkie przychodzące żądania do niestandardowego kontrolera ASHX, w którym stworzyliśmy niestandardową logikę przekierowania żądania przychodzącego (bez ograniczeń). –

Odpowiedz

1

Ponieważ jestem w środowisku współdzielonym, nie było innego rozwiązania niż przeniesienie go do pojedynczego zewnętrznego pliku konfiguracyjnego, który został ponownie ograniczony do 250 KB.

Więc oto co zrobiłem:

ja wypełnione mapę do liczby oferowanych z najwyższej przemycanych przekierowuje i oczywiście żadnej grupy adresów URL, które mogłyby zostać przekierowany za pomocą wzoru (tak byliby najszybciej).

Dla pozostałych 100 kilobajtów przekierowań, umieszczam je w tabeli REDIRECTS w db ... SO, po tym, jak żądanie przechodzi wszystkie reguły przepisywania w pliku (i oczywiście nie hit any), domyślnie przesyła żądanie do określonego skryptu.Jedną z pierwszych rzeczy, które robi skrypt, jest sprawdzenie tabeli REDIRECTS, a jeśli wpis istnieje, wykonuję przekierowanie w kodzie ... jest wolniejszy, ale większość rzeczy w tabeli to długi ogon, i jak już powiedziałem, najczęściej odwiedzane przekierowania są nadal w pliku. To mi się udało jak dotąd i mogę dodać tyle przekierowań, ile chcę ... jeśli edytowany jest tytuł/adres strony, mój obszar administracyjny automatycznie dodaje przekierowanie itp.

0

Plik Nativerd.dll używa wartości tego klucza rejestru do określenia maksymalnego dozwolonego rozmiaru (KB) plików Web.config. System konfiguracji przyjmuje domyślną wartość 250 KB w systemie Windows Server 2008 i 100 KB w wydanej wersji systemu Windows Vista.

Powodem limitu 250 KB jest ograniczenie ataków na przesyłanie dużego pliku web.config. Można zmienić limit zmieniając wartość górnego w rejestrze:

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

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

Inną opcją jest podzielone pliki web.config na wiele mniejszych plików.

+0

W moim pytaniu wyraźnie powiedziałem, że nie mogę edytować rejestru, więc nie jest to opcja, a także zauważyłem, że już przeniosłem przepisać mapowanie do zewnętrznego pliku, ale że ma on również problem z limitem 250kb, więc ta odpowiedź nie pomaga i nie odpowiada na pytanie. Być może po prostu wpadłeś w jakąkolwiek odpowiedź, aby otrzymać nagrodę. :( – GWR

-1

Możesz podzielić swoją konfigurację na kilka różnych plików, jak powiedział Neill.

Będziesz mieć główny plik web.config, w którym będziesz odwoływać się do plików podrzędnych, dodając atrybut configSource do sekcji, które chcesz podzielić na inne pliki.

Na przykład, jeśli chcesz podzielić sekcja „AppSettings” w innym pliku, by zmienić punkt appSettings w pliku web.config do:

<appSettings configSource="appsettings.config" /> 

aw appsettings.config plik, możesz dodać wszystkie swoje wpisy appsettings, takie jak były w oryginalnym pliku web.config, na przykład;

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

Oczywiście w zamian za to mapy do przepisywania.

+1

W moim pytaniu zauważyłem, że już przeniosłem przepisanie map do zewnętrznego pliku, ale ma on również problem z limitem 250kb, więc ta odpowiedź nie pomaga i nie odpowiada na pytanie. nie jest możliwe posiadanie więcej niż jednego zewnętrznego pliku rewriteMaps. – GWR