Salt la conținutul principal
Asistență
Conectare

O solicitare de ASP.NET care are multe chei de formular, fișiere sau JSON componentă membri nu reușește cu o excepție

Lucrați de oriunde de pe orice dispozitiv cu Microsoft 365

Faceți upgrade la Microsoft 365 pentru a lucra oriunde cu cele mai recente caracteristici și actualizări.

Faceți upgrade acum

Rezumat

Microsoft security update MS11-100 limite numărul maxim de formular chei, fișierele și JSON membri la 1000 într-o solicitare de HTTP. Din cauza această modificare, aplicații ASP.NET respinge solicitările care au mai mult de 1000 de aceste elemente. Clienții HTTP care face aceste tipuri de solicitări va fi refuzat și va apărea un mesaj de eroare în browserul web. Mesajul de eroare, de obicei, va avea un cod de stare HTTP 500. Această limită noi pot fi configurate în regim per aplicație. Consultați secțiunea "Rezolvare" pentru instrucțiuni de configurare.

Simptome

ASP.NET solicitările care au multe chei de formular, fișiere sau componentă JSON primi un răspuns de eroare de la server. Jurnalul de aplicații pe serverul are o intrare de avertizare cu o sursă de o anumită versiune de ASP.NET, și un ID de eveniment de 1309. Jurnalul de evenimente conține unul dintre următoarele mesaje:

Mesaj 1:

Aplicație informații: domeniu de aplicare: / LM/W3SVC/1/ROOT/< App domeniu > nivel de încredere: mediu aplicație calea virtuală: < cale virtual > Application calea: nume < cale aplicație > mașină: < nume mașină > procesul de informaţii: ID-ul procesului: 0001 nume de proces: w3wp.exe nume cont: informații excepții de APPPOOL\DefaultAppPool IIS: Exception type: mesaj HttpException excepție: date formular URL codificat nu este validă. la System.Web.HttpRequest.FillInFormCollection () la (System.Web.HttpRequest.get_Form) la (System.Web.HttpRequest.get_HasForm) la System.Web.UI.Page.GetCollectionBasedOnMethod (Boolean dontReturnNull) la (System.Web.UI.Page.DeterminePostBackMode) la System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Mesaj 2:

Aplicație informații: domeniu de aplicare: / LM/W3SVC/1/ROOT/< App domeniu > nivel de încredere: mediu aplicație calea virtuală: < cale virtual > Application calea: nume < cale aplicație > mașină: < nume mașină > procesul de informaţii: ID-ul procesului: 0001Process nume: w3wp.exe nume cont: informații excepții de APPPOOL\DefaultAppPool IIS: Exception type: mesaj InvalidOperationException excepție: operațiunea nu este validă din cauza starea curentă a obiectului. la System.Web.HttpRequest.FillInFilesCollection () la (System.Web.HttpRequest.get_Files) la FileUpload.Page_Load (Object sender, EventArgs e) la System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, obiectul t, EventArgs e) la System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) la System.Web.UI.Control.OnLoad (EventArgs e) la (System.Web.UI.Control.LoadRecursive) la System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint

Mesaj 3:

Domeniu de informații: aplicație aplicație: / LM/W3SVC/1/ROOT/< App domeniu > nivel de încredere: mediu aplicație calea virtuală: < cale virtual > Application calea: nume < cale aplicație > mașină: < nume mașină > procesul de informaţii: ID-ul procesului: 0001Process nume: w3wp.exe nume cont: informații excepții de APPPOOL\DefaultAppPool IIS: Exception type: mesaj InvalidOperationException excepție: operațiunea nu este validă din cauza starea curentă a obiectului. la System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary (Int32 adâncime) la System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (Int32 adâncime) la System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (String intrare, Int32 depthLimit, JavaScriptSerializer serializatorului) la System.Web.Script.Serialization.JavaScriptSerializer.Deserialize (JavaScriptSerializer serializatorului șir de intrare, tip, Int32 depthLimit) la System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject (String intrare) la Failing.Page_Load (Object sender, EventArgs e) la System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, obiectul t, EventArgs e) la System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Object sender, EventArgs e) la System.Web.UI.Control.OnLoad (EventArgs e) la (System.Web.UI.Control.LoadRecursive) la System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Fișierul jurnal IIS arată o intrare care seamănă cu următorul:

2011-01-01 00:00:00:: 1 POST /machine/default.aspx - 80 -:: 1-500 0 0 187

Cauză

Microsoft security update că buletinul de securitate MS11-100 adrese modifică implicit numărul maxim de formular chei, fișierele și membrii JSON care ASP.NET va accepta o cerere de la 1.000. Această modificare s-a făcut pentru a trata vulnerabilitatea Denial of Service că Microsoft security buletinului MS11-100 documente.

Rezolvare

Aplicațiile care ajunge la această limită pentru cheile de formular sau fișiere pot modifica ASP.NET appSetting aspnet:MaxHttpCollectionKeys, așa cum se arată mai jos în fișier de configurare a unei aplicații ASP.NET. Această setare se adresează mesaj de eroare 1 și eroare mesajul 2 din secțiunea "simptome" secțiune.

<configuration><appSettings><add key="aspnet:MaxHttpCollectionKeys" value="1000" /></appSettings></configuration>

Notă Dacă utilizați ASP.NET 1.1 pe un sistem bazat pe x86, setarea se reglează adăugând o valoare DWORD la următoarea cheie de registry:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys

Dacă utilizați ASP.NET 1.1 pe un sistem bazat pe x64, setarea se reglează adăugând o valoare DWORD la următoarea cheie de registry:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys

Aplicațiile care atins această limită pentru JSON componente pot modifica ASP.NET appSetting aspnet:MaxJsonDeserializerMembers, așa cum se arată mai jos în fișier de configurare a unei aplicații ASP.NET. Această setare se adresează eroare mesaj 3 din "Simptome" secțiune.

<configuration><appSettings><add key="aspnet:MaxJsonDeserializerMembers" value="1000" /></appSettings></configuration>

Notă Mărirea această valoare creşte de setarea implicită de mai sus vulnerabilitatea serverul vulnerabilitatea Denial of Service care este discutată în buletinul de securitate MS11-100.

Referințe

Pentru mai multe informații despre buletinul de securitate MS11-100, consultaţi următorul articol TechNet:

Microsoft Security buletinul MS11-100 - criticePentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2638420 MS11-100: O vulnerabilitate în .NET Framework poate permite sporirea privilegiilor: 29 decembrie 2011

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×