web-gelistirme-sc.com

Web.config herhangi bir uzunlukta isteklere izin verecek şekilde nasıl yapılandırılır

Bir textarea öğesinin değerinden bir istemci dosyası tarafı oluşturmak istediğim bir site yapıyorum.

Bunu yapmak için kodu var, ancak bu hatayı alıyorum

HTTP Hatası 404.15 - Bulunamadı İstek filtreleme modülü sorgu dizesinin çok uzun olduğu bir isteği reddetmek üzere yapılandırıldı.

Herhangi bir boyuttaki istekleri işleyebilmem için bunu geçersiz kılmanın bir yolu var mı?

Aksi takdirde, filesystem/active x nesnesini kullanmadan dosyalar istemci tarafı oluşturmanın bir yolu var mı?

teşekkürler

121
some_bloody_fool

Aşağıdakileri web.config'inize ekleyin:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="32768"/>
    </requestFiltering>
  </security>
</system.webServer>

Görmek:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

Yorumları yansıtacak şekilde güncellendi.

requestLimits requestFiltering öğesi [IIS Ayarları Şeması]

Aşağıdakileri web.config'inize de eklemeniz gerekebilir

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

Bakınız: httpRuntime Elemanı (ASP.NET Ayarları Şeması)

Tabii ki yukarıdaki yapılandırma ayarlarında sayılar (32768 ve 65536) sadece örneklerdir. Bu kesin değerleri kullanmak zorunda değilsiniz.

218
Matt Varblow

Benim durumumda (Visual Studio 2012/IIS Express/ASP.NET MVC 4 uygulaması/.Net Framework 4.5) 30 dakikalık deneme süresinden sonra gerçekten işe yarayan şey ve hata <httpRuntime> etiketindeki maxQueryStringLength özelliğini ayarlamaktı:

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLength varsayılanları 2048 şeklindedir.

Burada daha fazlası:

İzin Verilebilir URL Aralığının Genişletilmesi


@MattVarblow 'in önerdiği şekilde <system.webServer>' a ayarlamayı denedim, ama işe yaramadı ... ve bunun nedeni kullanıyorum çünkü IIS Express (= temelli IIS 8) Windows 8 ile dev makinemde.

Uygulamamı üretim ortamına dağıttığımda (Windows Server 2008 R2 IIS 7), IE 10 AJAX içinde uzun sorgu dizeleri olan 404 hata döndürmeye başladı . Sonra sorunun sorgu dizesiyle ilgili olduğunu düşündüm ve @ MattVarblow'un cevabını denedim. Bu sadece üzerinde çalıştı IIS 7. :)

29

Kontrol edilecek başka bir şey: siteniz MVC kullanıyorsa, oturum açma denetleyici sınıfınıza [Yetkilendir] eklerseniz bu olabilir. Oturum açma yöntemine erişemiyor çünkü yetkili değil, bu yüzden oturum açma yöntemine yönlendiriyor -> bom.

5
SteveCav

ASP Web Uygulamasını IIS 8'e dağıtmaya çalışırken de benzer bir sorunla karşılaştım. Düzeltmek için yukarıda Matt ve Leniel'in önerdiği gibi yaptım. Ancak, Anonim Kimlik Doğrulamayı etkinleştirmek için sitemin Kimlik Doğrulama ayarını da yapılandırmak zorunda kaldım. Ve bu benim için çalıştı.

0
Ronald Nsabiyera

Giriş sayfamdaki ActionResult işlevlerine [AllowAnonymous] ekledim, çünkü kullanıcı henüz doğrulanmadı.

0
Andrew Gale

IIS 8.5 web sunucusunu çalıştırırken bu sorunla karşılaşırsanız, aşağıdaki yöntemi kullanabilirsiniz.

İlk önce, üzerinde çalıştığınız IIS sitesinde "Requesting Filter" modülünü bulun, ardından çift tıklayın ...

 enter image description here

Ardından, aşağıda gösterilen beyaz alana sağ tıklamanız, ardından "Özellik Ayarlarını Düzenle" olarak adlandırılan içerik menüsü seçeneğini tıklamanız gerekir.

 enter image description here

Daha sonra yapılacak en son şey "Maksimum sorgu dizesi (Bayt)" değerini 2048 olarak ihtiyaçlarınız için 5000 gibi daha uygun bir şeyle değiştirmektir.

 enter image description here

0
Arvo Bowen

Web siteniz kimlik doğrulaması kullanıyorsa, ancak IIS 'de (örneğin, Temel, Formlar vb.) Ayarlanan doğru kimlik doğrulama yönteminiz yoksa, tarayıcı bir yönlendirme döngüsünde takılı kalır. Bu, yönlendirme url'sinin, patlayana kadar daha uzun ve daha uzun olmasına neden olur.

0
Steve Smith