2009-03-31 7 views
1

je reçois l'erreur suivante lorsque vous essayez d'utiliser Response.Redirect dans l'une de mes pages ASP.NET:erreur Bizarre avec Response.Redirect

[ArgumentOutOfRangeException: Specified argument was out of the range of valid values. 
Parameter name: offset] 
    System.Web.HttpResponseStream.Write(Byte[] buffer, Int32 offset, Int32 count) +8858392 
    System.Web.HttpResponseStreamFilterSink.Write(Byte[] buffer, Int32 offset, Int32 count) +30  
    System.Web.HttpWriter.Filter(Boolean finalFiltering) +8754611 
    System.Web.HttpResponse.FilterOutput() +82 
    System.Web.ApplicationStepManager.ResumeSteps(Exception error) +501 
    System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +123 
    System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +379 

Je ne l'ai jamais vu auparavant. Cela se produit si je Response.Redirect pendant l'événement de chargement de page.

Des idées?

EDIT: Ce n'est pas mon code, Cela se produit si je devais juste coller Response.Redirect par lui-même dans Page_Load.

EDIT # 2: Utiliser un en-tête 302 FOUND fonctionne bien, mais n'est-ce pas ce que response.redirect est censé faire de toute façon?

+0

Jetez une partie de votre code afin que nous puissions obtenir un coup d'oeil! – madcolor

+0

Cette erreur est-elle survenue dans la source ou la page de destination? – feihtthief

+0

destination page – FlySwat

Répondre

1

Cela n'aidera probablement pas beaucoup, mais l'exception elle-même est lancée à l'intérieur de HttpResponseStream.Write (octet [] buffer, int offset, nombre d'int), soit < 0 (ce qui n'est pas) ou la longueur du tampon est zéro. D'après ce que je comprends, cela pourrait arriver si la sortie bufférisée est activée et que quelque chose a réussi à écrire un zéro octet dans un flux.

Je voudrais essayer d'appeler un Flush avant de faire la redirection et d'expérimenter avec le second paramètre. Je voudrais également vérifier le web.config pour toute inscription de filtre personnalisé (peu probable cependant). Assurez-vous également que votre application cible ne dispose pas d'un traitement de page asynchrone, ce qui peut provoquer des dégâts.

Apparemment, d'autres personnes ont eu une erreur similaire, mais généralement lors de l'écriture de leurs propres filtres. Je finirais par déboguer au niveau de l'assembleur ...

0

Je voudrais examiner attentivement le code de la page de destination (puisque vous commentez l'erreur qui s'y passe). Il utilise probablement quelque chose qui dépend de la demande. Je n'ai jamais vu une erreur similaire, mais il semble vraiment que vous devriez vous concentrer sur des choses spéciales que cette page fait.

+0

La page de destination n'a pas d'importance. Je peux pointer n'importe quelle page sur le site ... il semble que cela vienne du cadre lui-même en regardant la trace de la pile. – FlySwat