Microsoft ReportViewer: Erreurs De Session Expirées

le projet est ASP.NET 2.0, Je n'ai jamais été en mesure de reproduire cela moi-même, mais je reçois des e-mails m'informant que cela arrive à des clients plusieurs fois par semaine, souvent plusieurs fois d'affilée.

Voici le message d'erreur:

Détails De L'Exception:

Microsoft.Signaler.WebForms.AspNetSessionExpiredException: ASP.NET session has expired

Trace De La Pile:

[AspNetSessionExpiredException: ASP.NET séance a expiré] chez Microsoft.Signaler.WebForms.Reportdataopération..ctor() chez Microsoft.Signaler.WebForms.HttpHandler.GetHandler() chez Microsoft.Signaler.WebForms.HttpHandler.ProcessRequest (HttpContext context)) au Système.Web.HttpApplication.Callhandlerexécutionstep.Système.Web.HttpApplication.IExecutionStep.Exécuter() au Système.Web.HttpApplication.ExecuteStep (IExecutionStep step, Boolean& completedSynchronously) Objets de Session: 75de8e1d65ff40d1ba666d940af5b118: Microsoft.Signaler.WebForms.ReportHierarchy 5210064be1fa4d6abf5dd5e56b262974: Microsoft.Signaler.WebForms.ReportHierarchy

19
demandé sur BartoszKP 2008-10-07 18:04:36

6 réponses

Nous avons eu le même problème. Jusqu'à présent, nous ne l'avons trouvé que lorsque la session a expiré, mais ils ont utilisé le bouton back dans un navigateur qui fait la mise en cache agressive, ce qui est bien. Mais le ReportViewer essayé d'actualisation même si la page n'a pas. Donc, nous avons juste ajouté un peu de hacky Global.traitement des erreurs asax:

protected void Application_Error(object sender, EventArgs e)
{
    Exception exc = Server.GetLastError().GetBaseException();
    if (exc is Microsoft.Reporting.WebForms.AspNetSessionExpiredException)
    {
        Server.ClearError();
        Response.Redirect(FormsAuthentication.LoginUrl + "?ReturnUrl=" + HttpUtility.UrlEncode(Request.Url.PathAndQuery), true);
    }
}
11
répondu Jon Adams 2008-10-07 14:48:43

Délai D'Expiration De Session

cela peut être dû au fait que le temps d'arrêt de la session est trop court. Consultez la section" sessionState " de votre site web.Config, par exemple :-

<system.web><sessionState mode="InProc" timeout="60" /></system.web>

qui fixerait un temps d'arrêt de 60 minutes.

Recyclage Du Pool D'Applications

une autre cause possible, et une que nous avons rencontré, est que votre bassin d'applications est recyclé pour une raison quelconque.

au cas où c'était parce que nous étions en tapant "mémoire virtuelle maximale", j'ai juste augmenté ce paramètre et tout va bien depuis.

jetez un coup d'oeil dans le journal des événements de votre système pour 1010, 1011, 1074, 1077, 1078, 1079, 1080 et 1117 événements de W3SVC et voir si votre bassin d'applications est recyclé et si oui, il devrait indiquer pourquoi.

3
répondu DrCamel 2008-10-27 15:10:03

voici ma dose.

exécuter IIS sur une ferme web, et chaque ferme a un nombre de jardins web=3 chacun,

j'ai simplement fait un pool d'application séparé juste pour les rapports sql et j'ai mis Que web gardern count=1 juste pour ce pool de rapports.

puis, fait un répertoire virtuel dans IIS et un projet séparé pour les rapports-en utilisant ce pool de rapports

problème résolu.

2
répondu Brilliant Logic 2010-09-21 17:14:57

j'ai eu ce problème lors du développement sur mon propre PC et je n'ai pas pu trouver de réponse n'importe où sur le net. Il s'est avéré qu'un de mes coéquipiers a ajouté ceci au web.config:

<httpCookies httpOnlyCookies="false" requireSSL="true" />

web.config sur le bureau du développeur ne devrait pas avoir L'étiquette et le DEV/QAS et Prod web.les fichiers de configuration.

je comprends aussi qu'il est possible pour les développeurs d'utiliser IIS Express et ensuite ils pourraient utiliser SSL localement.

1
répondu Brad Herder 2012-10-09 11:23:01

Quelle est la question? La session a expiré et ils ne peuvent pas continuer.

Vérifiez la vitesse de traitement du rapport. Intégrez une sorte de benchmark ou demandez-leur simplement de mesurer le traitement du rapport.

peut facilement être que cela fonctionne pour vous, mais pas pour eux (réseau plus lent, plus de données à gérer, serveur DB plus lent, et ainsi de suite).

Edit:Ici une autre explication et peut-être une solution pour le problème, mais je ne recomposition pour fixer le numéro de processus de l'ouvrier à 1 sur un environnement de production.

0
répondu Biri 2008-10-07 14:20:08

web gardern count=1 Fonctionne pour moi

0
répondu Ron Chong 2012-03-08 10:09:09