Σήμερα ανέβαζα ένα project σε production το οποίο ήταν ένα Web Application σε .ΝΕΤ όπου χρησιμοποιούσαμε το Report Viewer Control για να δείχνουμε τα reports που η εφαρμογή έχει.
Ενώ σε όλα τα στάδια ανάπτυξης και τεστ δεν είχαμε κάποιο θέμα μόλις ανέβηκε στην παραγωγή άρχισαν τα τηλέφωνα από τον πελάτη και μου στέλνουν και ένα mail με ένα screen dump όπου το control αυτό δεν έκανε τίποτα τα είχε δει όλα.
Η εικόνα του control ήταν η παρακάτω
Φυσικά ο IIS της παραγωγής ήταν ο 7 στο οποίο έχουν γίνει θεαματικές αλλαγές. Έτσι όταν βάζεις ένα control σε μια web page to Visual Studio παει και βάζει μέσα στο web.config το παρακάτω entry
<system.web>
<httpHandlers>
<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"/>
</httpHandlers>
</system.web>
Ο IIS 7 δεν μπορεί να το διαβάσει καθώς το httpHandlers section δεν είναι εκει πλέον αλλα στο <system.WebServer>. Δυστυχώς το VS 2008 πειράζει το web.config με την λογική του IIS 6.0.
Θα πρέπει λοιπόν για να διορθωθεί το θέμα αυτό είτε από το management tool του IIS 7 να βάλει το http Handler είτε να αλλάξεις εσύ το web.config όπως παρακάτω
<system.webServer>
<handlers>
<add name="ReportViewerWebControl" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</handlers>
</system.webServer>