2010-09-29 25 views
3

J'ai une application Web ASP.NET qui utilise ReportViewer pour afficher des rapports locaux. Tout fonctionne parfaitement sur ma machine de développement (XP Pro, Visual Studio 2008). Lorsque je déploie l'application sur le serveur de production (Windows Server 2008, IIS 7), le site fonctionne très bien, à l'exception du visualiseur de rapports. Lorsque je génère le rapport, le visualiseur de rapport reste vide.ASP.NET ReportViewer fonctionne en développement, est vide lors du déploiement

J'ai écrit le code de débogage pour vérifier que les enregistrements sont reçus de la base de données, et ils le sont. Aucune erreur ne se produit, mais aucun enregistrement n'apparaît dans l'afficheur du rapport. En outre, les images qui apparaissent normalement dans la barre de menus du contrôle ReportViewer (bouton d'exportation, bouton d'impression, boutons avant et arrière, etc.) ne se chargent pas non plus.

J'ai exécuté le ReportViewer.exe sur le serveur pour installer les fichiers appropriés, et j'ai vérifié qu'ils sont dans le GAC de la machine.

Quelqu'un peut-il suggérer un moyen de déboguer ce ... ce serait plus facile si une erreur était générée (je ne peux pas croire que je viens de le dire)?

Répondre

5

Veuillez vérifier que vous avez les entrées web.config requises. Mon soupçon est que vous manquez l'entrée dans system.webServer/handlers, ce qui est requis dans IIS7. IIS7 ignore à peu près la section system.web/httpHandlers, ce qui peut expliquer pourquoi cela fonctionne dans IIS 5.1 (XP), mais pas dans 7.

Les numéros de version peuvent varier, mais cela devrait couvrir pour les entrées:

dans la section system.web/compilation:

<buildProviders> 
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </buildProviders> 

dans le system.web/httpHandlers section

<add path="Reserved.ReportViewerWebControl.axd" 
     verb="*" 
     type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     validate="false" /> 

Et dans la system.webServer/section des gestionnaires:

<add name="ReportViewer" 
     path="Reserved.ReportViewerWebControl.axd" 
     verb="*" 
     type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
     preCondition="integratedMode" /> 
+0

Vous avez parfaitement raison concernant les entrées web.config. L'entrée dans la section system.webServer/handlers était manquante. Ma machine de développement utilise IIS 6 et la machine de déploiement utilise IIS 7, qui recherche les paramètres à un endroit différent dans le fichier de configuration. Merci pour votre réponse rapide et précise. Aussi: J'ai trouvé cet article après l'avoir posté: http://blogs.msdn.com/b/webtopics/archive/2009/02/10/report-viewer-toolbar-does-not-render-properly-on-iis-7 -0.aspx – rogdawg

+0

@kbrimington: J'ai le même problème. Sur les deux serveurs Dev et Prod, le rapport rdlc fonctionne correctement, mais toutes les images du rapport ne sont pas affichées, elles montrent des marques croisées. En cliquant avec le bouton droit de la croix et obtenir l'URL de la propriété et mettre dans le navigateur, il montre l'image. J'ai fait n'importe quelle suggestion que vous avez donnée ci-dessus. My Dev a IIS 7.5 et My Prod a IIS 8.5. pouvez-vous me guider pour surmonter le problème –

+0

@KumaranT, ça fait pas mal de temps pour moi. La version de SQL Server abordée dans ce message n'est plus prise en charge, afaik. Ma meilleure estimation, cependant, est que vous êtes confrontés à des problèmes d'authentification. Il se peut que le rapport dépende des images nécessitant une authentification, mais n'utilise pas l'authentification de l'utilisateur pour les récupérer. Si cela ne règle pas les choses pour vous, je vous recommande de poster une nouvelle question afin que StackOverflow. À votre santé! – kbrimington