Dynamics AX 2009 : Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'

Lors du déploiement des rapports de Microsoft Dynamics AX 2009, l’erreur suivante s'affichait : Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'

À la base, ce message veut dire que lorsque le service SSRS établit une connexion au serveur web de SSRS , il a obtenu un fichier HTML au lieu d'un fichier XML. (ce qui n’est pas normal). Tout d'abord, il faut tester son serveur web SSRS :

http://serveur:port/Reports devrait retourner le home page de SSRS:


http://serveur:port/ReportServer devrait retourner une page HTML


Si vous obtenez une erreur de type : Page Not Found, c’est probablement un problème de configuration de votre serveur SSRS. Vous devez vérifier la configuration de votre serveur SSRS. Toutefois, ce billet n’aide pas dans la résolution de ce problème.

Maintenant, il faut valider que le fichier rsreportserver.config est configuré comme indiqué dans la documentation d’installation de Dynamics 2009 :

Update the Reporting Services 2005 configuration file
If you are using Reporting Services 2005, use the following procedure to update the configuration file.
1. Open the rsreportserver.config file. By default, this file is located in
\Program Files\Microsoft SQL Server\ReportingServicesInstance\Reporting Services\ReportServer.
2. Locate the UrlRoot XML element and update the URL in that element, if necessary. For example, if you implemented SSL, you may need to change http to https, as shown: <UrlRoot>https://ServerName:PortNumber/reportserver</UrlRoot>
3. Save your changes and close the file.
4. Make a backup of the rsreportserver.config file.

Update the Reporting Services 2008 configuration file
If you are using Reporting Services 2008, use the following procedure to update the configuration file.
1. Open the rsreportserver.config file.By default, this file is located in
\Program Files\Microsoft SQL Server\ReportingServicesInstance\Reporting Services\ReportServer.
2. Locate the UrlString XML elements and update the URL in each of those elements, if necessary. (There are two UrlString elements.) For example, if you configured the virtual directories to use port 81, you may need to change the port number, as shown: <UrlString>http://+:81</UrlString>
3. Save your changes and close the file.
4. Make a backup of the rsreportserver.config file.

Dans mon cas, toutes les configurations étaient bonnes. Bizarrement, le déploiement des rapports débutait correctement, mais après un certain temps, l’erreur Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml apparaissait. Je pouvais même voir quelques rapports dans le dossier http://serveur:port/Reports/Dynamics.

Bref, c’est comme si le service web de SSRS fonctionnait correctement quelques minutes avant d'arrêter subitement. Je jette un coup d’œil dans les log de SSRS :
C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\LogFiles
Je trouve l’info :

INFO: Reporting Web Server stopped
INFO: Reporting Web Server started

Pourquoi le service Web de SSRS a redémarré ?…le maxRequestLength a été dépassé.
  1. Éditer C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\web.config

  2. Trouver la balise <httpRuntime>

  3. Ajouter l’attribut maxRequestLength avec une valeur de 1000000
    Exemple : <httpRuntime maxRequestLength="1000000" executionTimeout="90000" />
maxRequestLength : Indicates the maximum file upload size supported by ASP.NET. This limit can be used to prevent denial of service attacks caused by users posting large files to the server. The size specified is in kilobytes. The default is 4096 KB (4 MB).

Ensuite, vous pouvez refaire votre déploiement.
Bonus : Pour vérifier combien de MB vous aller déployer, il suffit de suivre les étapes suivantes :
  1. Vider le contenu de C:\Documents and Settings\%username%\Local Settings\Temp\
  2. Lancer le déploiement des rapports.
  3. Sélectionner toutes les librairies
  4. Laisser finir l’étape Building Librairies
  5. Un dossier temporaire avec toutes les librairies a été créer dans :
    C:\Documents and Settings\%username%\Local Settings\Temp\
  6. Regarder la grosseur du dossier décompresser avec toute les librairies. 
    Example : C:\Documents and Settings\
    %username%\Local Settings\Temp\2\tmp2482.tmp
Le contenu du dossier est envoyé au serveur SSRS, si la somme en kilobytes dépasse la valeur de maxRequestLenght, le service Web de SSRS va redémarrer afin d’éviter un Denial of Services. À titre indicatif, 1 Data Source, 154 Design in 40 culture(s) (6161 items) pèse environ 575MB.

Previous
« Prev Post