3 votes

Les postbacks ASYNC se produisent lorsque SupportsPartialRendering est défini sur false.

Nous rencontrons une erreur confuse sur deux de nos pages dans notre application ASP.NET. Les deux pages avaient initialement des balises meta pour recharger la page de temps en temps si un utilisateur restait dessus pendant un certain temps, mais nous avons choisi de les supprimer en faveur d'un peu de mise en forme AJAX. Plus précisément, nous avons créé des contrôles de minuterie sur la page et connecté l'événement tick de la minuterie en tant que déclencheur pour un panneau de mise à jour afin de recharger une partie de la page. Les pages ont également des scriptmanagers car nous n'en avons pas sur la page master. Cela fonctionne généralement très bien sauf que nous obtenons beaucoup de ces erreurs :

"La page effectue un postback asynchrone mais la propriété ScriptManager.SupportsPartialRendering est définie sur false."

Je comprends que si le framework .NET détecte qu'un navigateur ne prend pas en charge le rendu partiel, il définira la valeur ScriptManager.SupportsPartialRendering sur false et nous ne remplaçons PAS cela d'aucune manière. Par conséquent, les pages ne devraient pas effectuer de postbacks asynchrones si cette valeur est false, mais d'après l'erreur, les postbacks se produisent toujours et la page lance une exception.

Curiousement, l'agent utilisateur semble toujours être GoogleBot ou "Mozilla/4.0 (Windows 98; US) Opera 10.00 [en]".

Je serais reconnaissant pour toute clarification. Nous avons envisagé de forcer le SupportsPartialRendering à true, mais cela n'explique pas pourquoi les postbacks ASYNC se produisent même si le framework .NET définit cela sur false en fonction des capacités du navigateur.

0voto

Je trouve ça aussi. Il semble que les navigateurs plus récents vont également causer cette exception. Les éléments que j'ai trouvés jusqu'à présent - bien que je n'ai pas résolu mon propre scénario - sont les suivants:

  1. Assurez-vous que le n'est pas défini sur Legacy
  2. Potentiellement en supprimant les champs cachés

Vous pouvez désactiver le rendu partiel entièrement en définissant ScriptManager.EnablePartialRendering sur false. Cela forcera un panel de mise à jour à recharger l'ensemble du contenu du panel en une seule fois.

0voto

hmak Points 716

Je trouve SupportsPartialRendering aussi déroutant en raison du nom et du fait qu'il fait deux choses.

  1. Il agit comme un indicateur pour déterminer si le navigateur prend en charge le rendu partiel de la page. En tant qu'indicateur, il n'empêchera pas réellement les postbacks asynchrones, c'est pourquoi vous obtenez toujours l'erreur.

  2. Vous pouvez l'utiliser en tant que substitution. Vous pouvez autoriser les postbacks asynchrones quel que soit le navigateur, mais vous ne pouvez pas l'empêcher avec cette propriété.

Santé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X