Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    372

    [vb.net] errore inaspettato con IE

    Ciao a tutti,
    sto sviluppando un'applicazione web con VB.NET.
    io mi creo una tabella da codice e a una determinata riga gli inserisco il tag "onClick" con scritto "visualizza(78); return false;" dove "visualizza" e una funzioncina javascript scritta all'inizio con queste righe di codice:

    function visualizza(ID)
    {
    document.forms[0].action="testoDomandaDire.aspx?codice=0"+ID;
    document.forms[0].submit();
    }

    che mi rimanda alla pagina desiderata. Ora c'è il problema.

    Quando clicco mi da un errore strano e cioè:

    HttpException (0x80004005): Unable to validate data.]
    System.Web.Configuration.MachineKey.GetDecodedData (Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength) +195
    System.Web.UI.LosFormatter.Deserialize(String input) +60

    [HttpException (0x80004005): Authentication of viewstate failed. 1) If this is a cluster, edit <machineKey> configuration so all servers use the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 2) Viewstate can only be posted back to the same page. 3) The viewstate for this page might be corrupted.]
    System.Web.UI.LosFormatter.Deserialize(String input) +118
    System.Web.UI.Page.LoadPageStateFromPersistenceMed ium() +101

    [HttpException (0x80004005): Invalid_Viewstate
    Client IP: 213.140.22.64
    Port: 43254
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
    ViewState: dDwtOTI3NjYwNTE0O3Q8O2w8aTwxPjs+O2w8dDw7bDxpPDQ+O2 k8Nj47aTw4Pjs+O2w8dDxwPHA8bDxUZXh0Oz47bDxMJ0VudGVc XCBHbGkgdWZmaWNpXFwgRGlyZXR0b3JlIFJpc3BvbmRlXFwgOz 4+Oz47Oz47dDxwPGw8d2lkdGg7PjtsPDE3Mjs+Pjs7Pjt0PHA8 cDxsPFRleHQ7PjtsPERpcmV0dG9yZSBSaXNwb25kZTs+Pjs+Oz s+Oz4+Oz4+Oz5+O8mIJnid5L7CxF+Z8I7tXSL/Jg==
    Http-Referer: http://www.alfapi.com/sitoportofino/...ice=0000000147
    Path: /sitoportofino/testoDomandaDire.aspx.]
    System.Web.UI.Page.LoadPageStateFromPersistenceMed ium() +447
    System.Web.UI.Page.LoadPageViewState() +18
    System.Web.UI.Page.ProcessRequestMain() +447





    tuttavia se vado sulla barra degli indirizzi e clicco il tasto "invio" della tastiera mi dice "Impossibile visualizzare la pagina" ma se clicco ora "F5" mi visualizza la pagina corretta...

    Come è possibile?

  2. #2
    Ho letto da qualche parte che ASP.NET (nelle versioni 1.0 e 1.1) non supporta il POST dei dati verso pagine diverse da quella che lo esegue.
    Per esempio un webform nella pagina 'prova.aspx' non può inviare dati con il metodo POST verso 'prova2.aspx' come invece poteva avvenire con il vecchio ASP.
    "La vendetta è un piatto che va gustato freddo"
    Antico proverbio Klingon.
    Lo chiamavano il 'Computer Umano'. Sapeva contare fino a 20 e nudo fino a 21!

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da sndk4ASP
    Ho letto da qualche parte che ASP.NET (nelle versioni 1.0 e 1.1) non supporta il POST dei dati verso pagine diverse da quella che lo esegue.
    Per esempio un webform nella pagina 'prova.aspx' non può inviare dati con il metodo POST verso 'prova2.aspx' come invece poteva avvenire con il vecchio ASP.

    Ma, dico io, è concepibile solo pensare che il potentissimo asp.net non supporti il post verso una altra pagina? e che abbia prestazioni addirittura inferiori ad asp?
    Ma, da quando usavo asp, hanno forse cambiato l'html nel frattempo? :master:

    Davvero una pagina scritta in c# non può aprirne un'altra spedendo i dati col metodo POST? :maLOL: VVoVe:

    Pietro

  4. #4
    I metodi ci sono e questo potrebbe essere uno:

    http://www.codeproject.com/aspnet/jsnopostback.asp

    cmq non è che ASP.NET non possa farlo perchè è limitato rispetto ad ASP ma perchè è progettato per lavorare in un altra maniera cioè utilizzando i postback e chiamando funzioni definite nella stessa pagina da cui partono le richieste. A mio avviso è tutt'altro che un limite, è solo un altro modo di agire.

    "La vendetta è un piatto che va gustato freddo"
    Antico proverbio Klingon.
    Lo chiamavano il 'Computer Umano'. Sapeva contare fino a 20 e nudo fino a 21!

  5. #5
    il post dei dati è più che supportato, si recuperano con il classico request.form, il problema di andriex penso che sia di altra natura, mi lascia perplesso quando scrive

    io mi creo una tabella da codice e a una determinata riga gli inserisco il tag "onClick" con scritto "visualizza(78); return false;" dove "visualizza" e una funzioncina javascript scritta all'inizio
    dovrebbe spiegare meglio
    "...non è detto che sia tardi se non guardi che ora è..."

  6. #6
    In effetti il problema di andriex potrebbe essere differente. Qui forse c'è qualcosa al riguardo:

    http://support.microsoft.com/default.aspx/kb/831150

    Per quel che riguarda il POST dei dati tra pagine differenti è come dico io se si vuole utilizzare un webform (runat="server"). Ovviamente poi si può fare in modi diversi usando normali form HTML o js come nel primo articolo che ho postato.

    "La vendetta è un piatto che va gustato freddo"
    Antico proverbio Klingon.
    Lo chiamavano il 'Computer Umano'. Sapeva contare fino a 20 e nudo fino a 21!

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Gentilissimo andriex, è mia opinione che asp.net sia ottimo. Ma questo non vuol dire che sia perfetto; anzi, ci sono molte incongruenze (come quella che hai segnalato) e veri e propri orrori (per esempio il codice javascript per i controlli di validità)

    Ora, se tu, come me, vuoi aprire un'altra pagina, spedento i dati col form predefinito runat server, bisogna semplicemente correggere asp.net. E questo si ottiene non inviando il viewstate.

    Una soluzione che ho adottato da sempre è questa:
    codice:
    function avanti(pagina)
    {
    
    	document.Form1.action = pagina;
    	if(document.getElementById('__VIEWSTATE')) document.getElementById('__VIEWSTATE').disabled = true;
    	if(document.getElementById('__EVENTTARGET')) document.getElementById('__EVENTTARGET').disabled = true;
    	if(document.getElementById('__EVENTARGUMENT')) document.getElementById('__EVENTARGUMENT').disabled = true;
    	document.Form1.submit();
    }
    Se lavorerai ancora con asp.net, ne troverai ancora tante ma, finchè c'è codice... c'è speranza

    Ciao
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.