Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 17049|Válasz: 2

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

[Linket másol]
Közzétéve 2015. 04. 21. 15:56:12 | | |
A Gridview vezérlő használatával kapcsolatban ugyanazon az oldalon megállapították, hogy a frissítési eseményre a szerver nem válaszol, úgy tűnik, hibariasztás jelentkezik, majd információt kér, és most a megoldás a következőképpen összefoglalható: Kattintás, a frissítési esemény nem válaszol, mert a visszaküldés vagy visszahívás paramétere érvénytelen. Az eseményellenőrzés engedélyezett a konfigurációban <pages enableEventValidation="true"/> vagy <%@ Page EnableEventValidation="true" %> oldalakon. Biztonsági szempontból ez a funkció igazolja, hogy a visszaküldés vagy visszahívás eseményeinek paraméterei az eredetileg megjelenítő szervervezérlésből származnak. Ha az adatok érvényesek és elvártak, használd a Clientcrip módszert a tManager.RegisterForEventValidation módszer eltávolítására, hogy visszaküldési vagy visszahívásos adatot regisztrálj az ellenőrzéshez.
Leírás: Kezeletlen kivétel történt a jelenlegi webes kérés végrehajtása során. Nézd meg a stack trace adatait a hibáról és arról, honnan jött a kódodban, ami a hibát okozta.
         Kivétel részletei: System.ArgumentException: Érvénytelen visszaküldés vagy visszahívás paraméterek. Az eseményellenőrzés engedélyezett a konfigurációban, < oldal enableEventValidation="true"/> vagy <% @ Page EnableEventValidation="true" %> oldalakon. Biztonsági okokból ez a funkció igazolja, hogy a visszaküldés vagy visszahívás esemény paraméterei az eredeti szervervezérlésből származnak. Ha az adatok érvényesek és elvártak, használd a Clientcrip módszert a tManager.RegisterForEventValidation módszer eltávolítására, hogy visszaküldési vagy visszahívásos adatot regisztrálj az ellenőrzéshez.

       Hosszú vizsgálat után nem találtam problémát, és helyes volt újra ellenőrizni a kódot, és megnéztem az összes vezérlő azonosítóját és attribútumát az oldalon, de még mindig nem találtam a problémát. Később megtudtam, hogy ez történt:

Előfordulási körülmények:
1. Rejtett vezérlők vannak a képernyőn.
2. Többszörös Gridview kötés.

3. Többféle formában fészkel.
Előfordulási okok:
. A .NET az utolsó oldalon a kimeneti elemek alapján __EVENTVALIDATION rejtett mezőt generál. Egy egyszerű tesztet végeztek. Hozz létre egy <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" />, és hozd létre a megfelelő Click eseménykezelőt. Indítsd a programot, és reagálj helyesen az eseményre. Ezután állítsd be btnSubmit.Visable=false szintet, és manuálisan add hozzá <input type="submit" name="btnSubmit" value="Submit" /> az oldalon. Ha futtatod a programot, kivétel jelenik meg az EnableEventValidation tartalommal. Állítsuk be <@Page EnableEventValidation="false" > újra futtasd a programot, hogy helyesen reagáljon az eseményre. A két előtti és utáni __EVENTVALIDATION tartalmának megfigyelése megállapítható, hogy különböznek. A kivétel tekintetében úgy tekinthető, hogy a btnSubmit nincs benne a kimenetben, de amikor a háttérbe kerül, akkor van hozzá tartozó tartalom, ami következetlen, így az esemény ellenőrzése engedélyezve van. A .NET kivételt ad.

1. megoldás:
Page_Load(objektumküldő, EventArgs e)
{
    ha (! Page.IsPostBack)
    {
        adatkötés;
    }
}
2. megoldás:
<pages enableEventValidation="false"/>

1. Add hozzá az EnableEventValidation="false" értéket az <%@ oldalnyelvhez="c#" AutoEventWireup="true" CodeFile="Default.aspx.cs" örököl="_Default" %> az oldalon. (Először is)

2. Nézd át a web.config oldalt
<system.web>
<pages enableEventValidation="false"/>

3. Ez a Form Nesting, egy oldalnak csak egy Űrlapja lehet, amit gondos kódellenőrzéssel lehet megoldani.

4. Ha az oldal tartalmaz olyan vezérlőket, mint a DropDownList vagy ListBox, az alábbi okokból lehet szó:

4.1 Az ajax használata a legördülő menüben gyakran megtalálható a tartományi és városi összekapcsolási menüben, ami azért lehet ok, mert a legördülő menü eredeti tárgyértéke az aspx oldalhoz van rendelve, és a hiba megjelenik az esemény közzétételekor, a legördülő menü eredeti elemértékét töröljük, és az elem hozzáadódik a kötött eseményhez.
4.2 Ennek oka, hogy a DropDownList vezérlő ListItem érték tulajdonsága kínai karaktereket tartalmaz. Csak változtasd az értéket angolra vagy egy számra. A legjobb a következő állítást hozzáadni a web.config oldalon:
<globalizációs kérésEncoding="utf-8" válaszEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Mivel a POSTBACK nincs kódolva az UTF-8-ban, a JAVAscrip t eltávolítása problémásnak minősül.
Csak változtasd meg az requestEncoding="utf-8" betűt, de a responseEncoding="utf-8" nem

5. Regisztráció az esemény validációjára
Az elv az, hogy asp.net rögzítse ezt a visszaküldési értéket.
A RegisterForEventValidation-t a render során kell behívni.






Előző:A Tianhe-2-t megtiltották bennfentes felvásárlástól: az Egyesült Államok féltékeny Kína szuperszámítástechnikai erejére
Következő:Profializmus "Karrierterv sablon"
 Háziúr| Közzétéve 2015. 04. 22. 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Kód másolása


Közzétéve 2015. 04. 22. 10:40:46 |
Egyetértek azzal, hogy az EnableEventValidation="true" helyben validál és CPU-t fogyaszt; Az EnableEventValidation="false" visszaadja a szerver validációját, és újratölti az oldalt.
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com