9
votes

Les informations de l'état sont invalides pour cette page et peuvent être corrompues. (Seulement dans IE)

Quelqu'un peut-il m'aider avec cette exception. J'ai essayé de couple de corrections mais rien n'a fonctionné. Je reçois cette exception que dans IE (7, 8 et 9).

Lorsque je charge la première page, il arrive une liste déroulante. Lorsque je sélectionne un fournisseur spécifique et fait une page de retour de page et renvoie les informations requises. Si je change le fournisseur, il chargera toujours les informations. Lorsque je charge un contrôle sur la page en utilisant $ .Ajax demande de manière dynamique et que de revenir en arrière et modifiez la sélection déroulante (sélectionnez un fournisseur différent), il est ravi et m'a donné l'exception suivante. Encore une fois, cela ne se produit que dans l'IE. P>

The state information is invalid for this page and might be corrupted. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: The state information is invalid for this page and might be corrupted.

Source Error: 


[No relevant source lines]


Source File: c:\Users\tmalik\AppData\Local\Temp\Temporary ASP.NET Files\root\6691c708\751e6443\App_Web_a3kdfsht.2.cs    Line: 0 

Stack Trace: 


[FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. ]
   System.Convert.FromBase64String(String s) +0
   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +77
   System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4
   System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) +37
   System.Web.UI.HiddenFieldPageStatePersister.Load() +147

[ViewStateException: Invalid viewstate. 
    Client IP: 127.0.0.1
    Port: 
    Referer: http://localhost:57289/vendor.aspx
    Path: /vendor.aspx
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MDDR)
    ViewState: 2D1IMRanPXfVARbRp1ooiwD71WHybNzxSNLbbA0G3MxKeo7m52dHWLBPGdnMH5JthTnPVt7UES/PVx39dfZYHbr0/DL7J58mvA2I4wRUSdDShVxvZqC7ZPZWcatowpZ7VYaD9PFKW7OkgppCwmePFuYnpU8kWDT5TvSLqN50Flrqpv0zCM9YoCKemfesa68rqBkkSTijcxnxdDCgvzSl72giI4ZhwK92wD22Ma6scW4PFjRZeTsKoowJq+JqJGuBMEepwKguFUy4dX86UIULnJ7NQsgZW1aQvpZdnfSRCSYrWhFWPhKTPsS622eaQYShsxddPs/mfEB26f54WS+iBYuk3mWm8jr6sWvsOIRtwH8b3E/5UujbgAxTNVg8BhzpSFvmE4KwGKo0tKuuqOFtP0pjpaAI7fV3EQ1M7BVQSAVrtBevRFJ0PlCPrU2aQms2LVeE5POqTJGtY+74xWkdCtLzT04Ug4R+SMBRElQBqX/5A54OHj2ghYjJ/3tgg4ToGUX2xrQ/c70lrphP+kabGVM2Op4DFjZAaOZj/CDVUurH2BYXKuJdUvzbf2zHngoOnqZGqrw3n6V6HGcnHNKxfuGQ20MPdxJYCbYHGiRqixzV1NxJoHFHbYCVx3IlrqF0W44AFKm2gzzk3V8zu9lUjyFNvUNBMjNaZeekLtcWpszhKrm8WhVnWQAk1CXxKJqyK0RC3...]

[HttpException (0x80004005): The state information is invalid for this page and might be corrupted.]
   System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +235
   System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) +14
   System.Web.UI.HiddenFieldPageStatePersister.Load() +251
   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +106
   System.Web.UI.Page.LoadAllState() +43
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8431
   System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +253
   System.Web.UI.Page.ProcessRequest() +78
   System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
   System.Web.UI.Page.ProcessRequest(HttpContext context) +49
   ASP.vendor_aspx.ProcessRequest(HttpContext context) in c:\Users\tmalik\AppData\Local\Temp\Temporary ASP.NET Files\root\6691c708\751e6443\App_Web_a3kdfsht.2.cs:0
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75


3 commentaires

Je poursuivrais cela: "L'entrée n'est pas une chaîne de base valide-64 car elle contient un caractère non de base 64, plus de deux caractères de rembourrage, ou un caractère d'espace non blanc parmi les caractères de rembourrage."


Je pense que je connais mon problème. L'ajout de commandes dynamiques (AJAxly) sur la page modifie la visualisation de la vue et lorsque nous publierons la page, il jette une exception car la viewstate a changé. J'ai utilisé un hack pour supprimer tous les espaces locaux (c'est-à-dire div) en utilisant jQuery à la pagePost de retour. Ce qui signifie éliminer toute la vision ajoutée. Voici ma solution $ ("# VendorListdropDowntsearchable"). Modification (fonction () {$ ("# usercontrol1div"). Supprimer (); $ ("# usercontrol2div"). Supprimer ();});


Super! Si vous confirmez que cela résout votre problème, veuillez revenir ici et créer une réponse. Cela aidera vraiment les autres personnes qui vont sûrement trouver leur chemin ici. J'ai eu exactement le même message d'erreur moi-même, je ne pouvais tout simplement pas me souvenir. Il convient parfaitement à répondre à vos propres questions (cela le dit dans la FAQ).


4 Réponses :


13
votes

OK, alors voici la solution / piratage que j'ai proposé. Mon problème était que l'ajout d'un contrôle de l'utilisateur de manière dynamique (via AJAX Demande) sur la page modifiez l'état d'affichage de la page et lancé une exception. Lors de la recherche, j'ai découvert que la ViewState stocke l'état d'une page (propriétés et paramètres). Une fois que vous avez renvoyé les commandes HTML à partir d'un service Web, il y aura une sorte de visualisation de vision stockée sur la page. Et lorsque vous retournez sur le serveur, vous lancerez une exception lorsqu'il déchiffrera la vision de Viewstae pour reconstruire la page. J'ai simplement supprimé ces contrôles (qui ont été ajoutés de manière dynamique) sur la page après le dos en utilisant jQuery et problème ont été résolus.

//In my case "VendorListDropDownSearchable", causes the page post back.
    $("#VendorListDropDownSearchable").change( function () {
        $("#UserControl1DIV").remove(); //removing the place holder holding control1
        $("#UserControl2DIV").remove(); //same as above
    });


3 commentaires

Tauseef @tauseref hi a le même problème. seulement dans IE.


Totalement eu le problème identique. Merci d'avoir posté la réponse!


J'avais le même problème que dans IE9 (la page a bien fonctionné dans IE10). Je devais ajouter un bouton OnClientClick à mon bouton ASP.NET, pour appeler une fonction JavaScript comme la vôtre, avant de tenter d'exécuter un code C #, de rediriger vers une autre page ASP.NET.



4
votes

Je sais que cela a été répondu mais voici quelques autres options:

1). Si vous faites un service de service Web via JQuery .charger (), vous pouvez simplement supprimer la vision de la vue lors de votre retour à l'aide du paramètre de rappel Charges P>

[WebMethod(EnableSession = true)]
[System.Web.Script.Services.ScriptMethod]
public string GetControlHtml()
{

// do stuff to get the control you want

....

Page page = new Page();
HtmlForm form = new HtmlForm();
var ctl = (MyControlsNameSpace.Controls.MyControl)page.LoadControl("Controls\\MyControl.ascx");

page.Controls.Add(form);
form.Controls.Add(ctl);
StringWriter result = new StringWriter();
HttpContext.Current.Server.Execute(page, result, false);

// Extension Method RemoveViewStateFromControl
var MyControlsHTML = result.RemoveViewStateFromControl();
return MyControlsHTML;

}

.....

// In an extensions class....
public static string RemoveViewStateFromExecuteControl(this StringWriter writer)
    {
        HtmlAgilityPack.HtmlDocument Doc = new HtmlDocument();
        Doc.LoadHtml(writer.ToString());
        var Divs = Doc.DocumentNode.SelectNodes("//div");
        if (Divs != null)
        {
            foreach (var Tag in Divs)
            {
                if (Tag.Attributes["class"] != null)
                {
                    if (string.Compare(Tag.Attributes["class"].Value, "aspNetHidden", StringComparison.InvariantCultureIgnoreCase) == 0)
                    {
                        Tag.Remove();
                    }
                }
            }
        }

        return Doc.DocumentNode.OuterHtml;
    }


2 commentaires

+1 pour votre réponse n ° 1: $ ('. Aspnethidden', ceci) .Retirer (); J'ai essayé activerviewstate = "False", Activerviewstaemac = "False", ViewStaTemode = "Désactivé" sur ma page interne (jQuery Chargé), aucune de ces personnes n'empêchait les DIV aspnethdriddées de comparaître la page de vue de la page mère. (Erreur appliquée à tous les navigateurs pour moi.)


C'était la question réelle. Merci!



1
votes

Dans mon cas, le problème portait deux balises.

J'ai une zone de texte dans ma page principale. Si l'utilisateur entre une valeur dans cette zone de texte, un script passe à une autre page et recherche cette valeur lorsque l'utilisateur continue de l'écrire. Normalement, j'ai créé cette "autre" page en cliquant sur Site Web , Ajouter un nouvel élément . Donc Visual Studio a créé une nouvelle page pour moi. Comme d'habitude, il y avait tag dans cette nouvelle page, aussi. J'ai donc supprimé ces balises et le problème a été résolu.

ci-dessous sont mes codes:

(PS: J'utilise MasterPage. Mais le code ci-dessous n'est nécessaire que dans ma page principale) < / p> xxx

dans le code ci-dessus serinover.aspx est la deuxième page qui ne doit pas avoir tag.


0 commentaires

0
votes

Videz le div vous avez chargé "sur caché". J'ai trouvé que vider la div ou le régler au texte d'origine (le mien était un message de chargement) a tous deux travaillé.

<a class="popmodal" href="YOUR HREF HERE">View History</a>


    $('.popmodal').on('click', function (e) {
                e.preventDefault();
                $('#modalViewBenefitsHistory').modal('show').find('.modal-content').load($(this).attr('href'));
            });


    $('#modalViewBenefitsHistory').on('hidden.bs.modal', function (e) {
                $('.modal-content').empty();
            })

--OR

$('#modalViewBenefitsHistory').on('hidden.bs.modal', function (e) {
            $('.modal-content').text("&nbsp;Loading your benefits history...please wait a moment.");
        })



<div id="modalViewBenefitsHistory" aria-hidden="true" class="modal fade">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
            &nbsp;Loading your benefits history...please wait a moment.
        </div>
    </div>
</div>


0 commentaires