"HTTP Error 404.11 - Not Found The request filtering module is configured to deny a request that contains a double escape sequence" hatasını giderme

Uygulamanız için özel bir custom handler kullanıyorsanız bazı durumlarda aşağıdaki gibi bir hata mesajı ile karşılaşmanız olası :

HTTP Error 404.11 - Not Found
The request filtering module is configured to deny a request that contains a double space sequence.

IIS 7 ve IIS 7.5 kurulumlarında varsayılan olarak aktif olan Request Filtering özelliği, içerisinde + işareti bulunan adresleri çalıştırmadığı (reject ettiği) için bu hata meydana geliyor. CGI gibi bazı standartlar boşluk yerine + işareti kullanmayı tercih ediyorlar ancak bu kullanım ile tehlikeli sonuçlar ortaya çıkabiliyor. Bu nedenle de IIS 7 ve IIS 7.5 içerisinde + işaretli adreslerin çalışması engellenmiş durumda.

Custom handler içerisinde + işaretlerinin kullanması tehlikeli olmakla birlikte + işaretlerinin boşluk karakterine çevrilmesi de yönlendirmelerin düzgün çalışmamasına veya farklı sorunlara sebep olabilmektedir.

+ işaretlerini boşluk karakterleri ile değiştirip kullanmak istiyorsak ne yapacağız peki? Bunun için Request Filtering içerisinde bir tanım yapmamız gerek. Bu tanımı sunucu genelinde yapmak tüm sitelerde ayarı aktif edeceği ve tehlikeli olacağı için sadece ilgili web sitesinde tanımlamakta fayda var.

IIS Manager'da ilgili web sitesinde Request Filtering'e çift tıkladığımızda açılan ekranda sağ kısımdaki Actions bölümünden Edit Feature Settings'e tıklıyoruz.

Edit Request Filtering Setings başlıklı ekranda varsayılan olarak kapalı olan Allow double escaping özelliğini işaretleyip OK ile işlemi tamamlıyoruz.

IIS 7'deki IIS Manager içerisinde Request Filtering özelliğine ait bir arabirim olmadığı için IIS 7 kullanan sunucularda aşağıdaki komut ile gerekli tanımlamayı yapabiliriz :

%windir%\system32\inetsrv\appcmd set config "Default Web Site" -section:system.webServer/security/requestfiltering -allowDoubleEscaping:true

Bu işlemi ayrıca web.config dosyası içerisinden de yapmak mümkün :

<configuration>
      <system.webserver>
            <security>
                  <requestFiltering allowDoubleEscaping="true">
                   </requestFiltering>
             </security> 
       </system.webServer>
</configuration>

 

Comments