Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 17049|Vastaus: 2

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

[Kopioi linkki]
Julkaistu 21.4.2015 15.56.12 | | |
Samalla sivulla Gridview-ohjauksen käytöstä havaittiin, että palvelin ei pysty vastaamaan päivitystapahtumaan, näyttää siltä, että se on virhehälytys ja sitten kyselee tietoja, ja nyt ratkaisu tiivistetään seuraavasti: Klikkaa, päivitystapahtuma ei voi vastata, koska postback- tai callback-parametri on virheellinen. Tapahtuman validointi on käytössä konfiguraatiossa <pages enableEventValidation="true"/> tai <%@ Page EnableEventValidation="true" %> sivuilla. Turvallisuussyistä tämä ominaisuus varmistaa, että postback- tai callback-tapahtumien parametrit ovat peräisin palvelimen ohjauksesta, joka ne alun perin renderöi. Jos data on kelvollista ja odotettua, käytä Clientscrip-menetelmää poistaaksesi tManager.RegisterForEventValidation-menetelmän postback- tai callback-tietojen rekisteröimiseksi validointia varten.
Kuvaus: Käsittelemätön poikkeus tapahtui nykyisen verkkopyynnön suorittamisen aikana. Tarkista pinon jäljityksen tiedot virheestä ja siitä, mistä koodisi virheen aiheutti.
         Poikkeustiedot: System.ArgumentException: Virheelliset palautus- tai callback-parametrit. Tapahtuman validointi on käytössä konfiguraatiossa, jossa < sivua enableEventValidation="true"/> tai <% @ Page EnableEventValidation="true" %> sivuilla. Turvallisuussyistä tämä ominaisuus varmistaa, että postback- tai callback-tapahtuman parametrit ovat peräisin palvelimen ohjauksesta, joka ne alun perin renderöi. Jos data on kelvollista ja odotettua, käytä Clientscrip-menetelmää poistaaksesi tManager.RegisterForEventValidation-menetelmän postback- tai callback-tietojen rekisteröimiseksi validointia varten.

       Pitkän tarkastelun jälkeen en löytänyt mitään ongelmaa, ja oli oikein tarkistaa koodi uudelleen, ja tarkistin kaikkien sivun kontrollien ID:t ja attribuutit, mutta en silti löytänyt ongelmaa. Myöhemmin sain tietää, että näin kävi:

Esiintymisolosuhteet:
1. Näytöllä on piilotettuja ohjaimia.
2. Useita Gridview-sidoksia.

3. Sisäkkäinen useissa muodoissa.
Esiintymisen syyt:
. .NET generoi __EVENTVALIDATION piilotetun kentän viimeiselle sivulle sivun tuloselementtien perusteella. Tehtiin yksinkertainen testi. Luo <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> ja luo vastaava Click-tapahtumankäsittelijä. Suorita ohjelma ja reagoi tapahtumaan oikein. Aseta sitten btnSubmit.Visable=false ja lisää manuaalisesti <input type="submit" name="btnSubmit" value="Submit" /> sivulle. Kun ohjelma käynnistyy, poikkeus ilmestyy EnableEventValidation-sisällön yhteydessä. Aseta <@Page EnableEventValidation="false" > aja ohjelma uudelleen vastaamaan tapahtumaan oikein. Kun tarkastellaan kahden ennen ja jälkeen __EVENTVALIDATION sisältöä, voidaan havaita, että ne ovat erilaisia. Poikkeuksen osalta voidaan katsoa, että btnSubmit ei ole mukana tulosteessa, mutta kun se lähetetään taustalle, on vastaavaa sisältöä, joka on epäjohdonmukaista, joten tapahtuman varmistuksessa on käytössä. .NET heittää poikkeuksen.

Ratkaisu 1:
Page_Load(objektin lähettäjä, EventArgs e)
{
    jos (! Page.IsPostBack)
    {
        sitoa dataa;
    }
}
Ratkaisu 2:
<sivut enableEventValidation="false"/>

1. Lisää EnableEventValidation="false" sivun <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" inherits="_Default" %> sivulta. (Ensinnäkin)

2. Käy läpi web.config
<system.web>
<sivut enableEventValidation="false"/>

3. Kyseessä on Form nesting, sivulla voi olla vain yksi Form, joka voidaan ratkaista tarkistamalla koodi huolellisesti.

4. Jos sivulla on ohjaimia, kuten DropDownList tai ListBox, syy voi johtua seuraavista:

4.1 Ajaxin käyttö pudotusvalikossa löytyy yleisesti provinssin ja kaupungin linkitysvalikosta, mikä voi johtua siitä, että pudotusvalikon alkuperäinen kohdearvo on määritetty aspx-sivulle, ja virhe ilmenee, kun tapahtuma julkaistaan, ja pudotusvalikon alkuperäinen kohdearvo poistetaan ja esine lisätään sidottuun tapahtumaan.
4.2 Syynä on se, että DropDownList-kontrollin ListIt-ominaisuuden Value-ominaisuus sisältää kiinalaisia merkkejä. Vaihda vain arvo englanniksi tai numeroksi. On parasta lisätä seuraava lause web.config-tiedostoon:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Koska POSTBACK ei ole koodattu UTF-8:aan, JAVAscripin t:n poistaminen katsotaan ongelmalliseksi.
Vaihda vain requestEncoding="utf-8" siihen, mutta responseEncoding="utf-8" ei muuta

5. Rekisteröidy tapahtuman validointiin
Periaate on antaa asp.net kirjata tämä palautusarvo.
RegisterForEventValidation täytyy kutsua renderöinnissä.






Edellinen:Tianhe-2:lta kiellettiin sisäpiiriläisten ostaminen: Yhdysvallat on kateellinen Kiinan superlaskentatehosta
Seuraava:Ammattimaisuus "Urasuunnitelman malli"
 Vuokraisäntä| Julkaistu 22.4.2015 10.36.18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Kopioi koodi


Julkaistu 22.4.2015 10.40.46 |
Olen samaa mieltä yläkerran pointista, että EnableEventValidation="true" validoi paikallisesti ja kuluttaa prosessoria; EnableEventValidation="false" palauttaa palvelimen validoinnin ja lataa sivun uudelleen.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com