Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 17049|Atsakyti: 2

[ASP.NET] System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEven

[Kopijuoti nuorodą]
Paskelbta 2015-04-21 15:56:12 | | |
Kalbant apie "Gridview" valdiklio naudojimą tame pačiame puslapyje, nustatyta, kad serveris negali atsakyti į atnaujinimo įvykį, atrodo, kad jo klaidos pavojaus signalas ir tada užklausia tam tikros informacijos, o dabar sprendimas apibendrinamas taip: Spustelėkite atnaujinimo įvykis negali atsakyti, nes atgalinio arba atgalinio iškvietimo parametras yra netinkamas. Įvykių tikrinimas įgalintas konfigūracijoje su <pages enableEventValidation="true"/> arba <%@ Page EnableEventValidation="true" %> puslapiuose. Saugumo sumetimais ši funkcija patikrina, ar atgalinio iškvietimo arba atgalinio iškvietimo įvykių parametrai yra kilę iš serverio valdiklio, kuris juos iš pradžių atvaizdavo. Jei duomenys yra teisingi ir laukiami, naudokite Clientscrip, kad pašalintumėte metodą tManager.RegisterForEventValidation, kad užregistruotumėte atgalinio iškvietimo arba atgalinio iškvietimo duomenis tikrinimui.
Aprašas: vykdant dabartinę žiniatinklio užklausą įvyko neapdorota išimtis. Patikrinkite rietuvės sekimo informaciją, kad gautumėte išsamios informacijos apie klaidą ir iš kur ji atsirado kode, kuris sukėlė klaidą.
         Išsami išimties informacija: System.ArgumentException: neleistini atgalinio iškvietimo arba atgalinio iškvietimo parametrai. Įvykių tikrinimas įgalintas konfigūracijoje su < puslapiais enableEventValidation="true"/> arba <% @ Page EnableEventValidation="true" %> puslapiuose. Saugumo sumetimais ši funkcija patikrina, ar atgalinio iškvietimo arba atgalinio iškvietimo įvykio parametrai yra kilę iš serverio valdiklio, kuris juos iš pradžių atvaizdavo. Jei duomenys yra teisingi ir laukiami, naudokite Clientscrip, kad pašalintumėte metodą tManager.RegisterForEventValidation, kad užregistruotumėte atgalinio iškvietimo arba atgalinio iškvietimo duomenis tikrinimui.

       Ilgai žiūrėjęs, neradau jokių problemų ir buvo teisinga dar kartą patikrinti kodą, patikrinau visų puslapio valdiklių ID ir atributus ir vis tiek neradau problemos. Vėliau sužinojau, kad taip atsitiko:

Atsiradimo sąlygos:
1. Ekrane yra paslėpti valdikliai.
2. Keli "Gridview" susiejimai.

3. Įdėta keliomis formomis.
Atsiradimo priežastys:
. .NET sugeneruoja __EVENTVALIDATION paslėptą lauką paskutiniame puslapyje pagal puslapio išvesties elementus. Buvo atliktas paprastas testas. Sukurkite <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> ir sukurkite atitinkamą Click įvykio apdorojimo programą. Paleiskite programą ir teisingai reaguokite į įvykį. Tada nustatykite btnSubmit.Visable=false ir rankiniu būdu puslapyje pridėkite <input type="submit" name="btnSubmit" value="Submit" />. Paleiskite programą ir bus rodoma išimtis su EnableEventValidation turiniu. Nustatykite <@Page EnableEventValidation="false" > paleiskite programą dar kartą, kad ji tinkamai reaguotų į įvykį. Stebint dviejų __EVENTVALIDATION turinį prieš ir po, galima pastebėti, kad jie skiriasi. Kalbant apie atsirandančią išimtį, galima manyti, kad btnSubmit nėra įtrauktas į išvestį, tačiau kai jis pateikiamas fone, yra atitinkamas turinys, kuris yra nenuoseklus, todėl įjungto įvykio patvirtinimo atveju. .NET pateikia išimtį.

1 sprendimas:
Page_Load(objekto siuntėjas, EventArgs e)
{
    jei (! Page.IsPostBack)
    {
        susieti duomenis;
    }
}
2 sprendimas:
<puslapiai enableEventValidation="false"/>

1. Pridėkite EnableEventValidation="false" prie puslapio <%@ Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> puslapio. (Visų pirma)

2. Eikite per web.config
<system.web>
<puslapiai enableEventValidation="false"/>

3. Tai formos lizdas, puslapyje gali būti tik viena forma, kurią galima išspręsti atidžiai patikrinus kodą.

4. Jei puslapyje yra valdiklių, tokių kaip "DropDownList" arba "ListBox", tai gali būti dėl šių priežasčių:

4.1 Naudojant ajax išskleidžiamajame meniu dažniausiai randama provincijos ir miesto susiejimo meniu, kuris gali būti dėl to, kad pradinė elemento reikšmė išskleidžiamajame meniu yra priskirta aspx puslapyje, ir klaida yra paraginta, kai įvykis yra paskelbtas, ir pradinė elemento reikšmė išskleidžiamajame meniu yra ištrinta, ir elementas elementas pridedamas prie susieto įvykio.
4.2 Priežastis ta, kad valdiklio DropDownList ypatybėje ListItem yra kinų kalbos simbolių. Tiesiog pakeiskite reikšmę į anglų arba skaičių. Geriausia į web.config pridėti šį teiginį:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Kadangi POSTBACK nėra užkoduotas UTF-8, JAVAscrip pašalinimas bus laikomas problematišku.
Tiesiog pakeiskite requestEncoding="utf-8" į jį, bet responseEncoding="utf-8" ne

5. Registruokitės įvykio patvirtinimui
Principas yra leisti asp.net įrašyti šią atgalinę vertę.
RegistrForEventValidation turi būti iškviestas generuojant.






Ankstesnis:"Tianhe-2" buvo uždrausta pirkti viešai neatskleistus asmenis: Jungtinės Valstijos pavydi Kinijos superkompiuterių galios
Kitą:Profesionalumas "Karjeros plano šablonas"
 Savininkas| Paskelbta 2015-04-22 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Kopijuoti kodą


Paskelbta 2015-04-22 10:40:46 |
Sutinku su viršuje esančiu punktu, kad EnableEventValidation="true" bus patvirtintas lokaliai ir sunaudos procesorių; EnableEventValidation="false" grąžins serverio patvirtinimą ir iš naujo įkels puslapį.
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com