8
votes

Le contrôle de cartographie ASP.NET ne fonctionne pas sur le serveur de production

J'ai une application qui dépend fortement de la cartographie et que les graphiques fonctionnent actuellement dans le serveur de développement ASP.NET, mais lorsque j'essaie de publier sur mon serveur (Win 2008 Server R2, IIS 7), les graphiques ne le font pas. arriver.

Utiliser Firebug, je peux voir que l'appel à ChartiMg.Axd renvoie un 404, et tout ce que je reçois est un porte-image vierge dans IE, ou rien dans Firefox. J'ai cherché environ 3 ou 4 heures jusqu'à présent et j'ai essayé à peu près tout recommandé, mais rien ne semble fonctionner.

J'aimerais utiliser la mémoire / httpimagehandler, au lieu de la configuration de l'imagélocation.

mon web.config xxx

Quelqu'un a-t-il des idées où je me trompe pour empêcher cela de travailler sur mon serveur?


2 commentaires

Y U no user Graphiques de fusion , il est génial et gratuit.


@bastardo non maintenant fusionCharts.com/goodies/fusionChartS-Free


6 Réponses :


1
votes

Cela semble être un problème de sécurité / permission. Enregistrez-vous des diagrammes dans le dossier local, puis affectez l'autorisation d'écriture pour les utilisateurs de l'utilisateur et / ou des services réseau IIS pour ce dossier.


3 commentaires

Bien que j'essaie de ne pas utiliser l'emplacement de l'image, j'ai fourni des autorisations de service de service réseau pour mon dossier C: \ TempimageFiles \ et les images sont placées dans le dossier, ce qui me conduit à croire que cela fonctionne comme prévu, mais ils ne sont pas avancés à ma demande. Je semble toujours avoir une erreur 404 quand ce faisant ça.


Essayez de créer un dossier 'TempimageFile' dans votre dossier IIS et essayez d'y accéder directement à partir de Web comme 'www.yourdomain.com/tempimagefile/char.jpg' et voyez si cela fonctionne. Utilisez ensuite cet emplacement dans votre page Web.


Ou modifiez les spécifications de la CharTIMageHandler dans les paramètres de l'application pour créer l'image en mémoire plutôt que dans un fichier.



0
votes

Installez les commandes de graphique Microsoft sur votre serveur Web ou essayez ceci:

Contrôle de la carte ASP.NET sur l'environnement d'hébergement partagé

Vérifiez également que le HTTPHANDLER est enregistré dans System.Webserver dans votre Web.Config lors de l'exécution sous IIS 7.


1 commentaires

Je pense que les contrôles de graphique sont intégrés à la structure .NET 4.0. Le gestionnaire est présent dans les listes de la demande sous mappages de gestionnaire dans le gestionnaire IIS



6
votes

J'ai trouvé la réponse à mon problème, mais je crois que mon problème a décollé spécifiquement de la façon dont mon code est exécuté.

Une fois que j'ai défini privéImages = false sous AppSettings pour mon CHRANTIMAGEHANDLERDLER, mes images n'ont pas de problème, à l'aide de l'imagélocation avec le stockage de fichiers ou HTTPHandler avec stockage de mémoire.

J'ai regardé la liste ici et réalisa que mon code n'a aucune des opérations suivantes:

  • Authentification
  • SessionId
  • Anonymousid

    donc le paramètre implicite par défaut de privéImages = true me tenait de télécharger mes images. Lorsque j'ai défini privéImages = false Je n'avais aucun problème et les graphiques fonctionnaient correctement. J'ai défini mon application pour utiliser l'authentification Windows et définir privéImages = true et mes graphiques sont maintenant générés avec le paramètre d'emplacement d'image ou le paramètre HTTPHANDLER.

    Espérons que cela est utile. Je sais que j'ai passé beaucoup de temps à creuser et je n'ai nulle part.


0 commentaires

2
votes

Ce travail de configuration pour moi. Vous devez utiliser la mémoire comme stockage.

< add key="ChartImageHandler" value="storage=memory;deleteAfterServicing=true;timeout=20;"/>


3 commentaires

Je me rends compte que c'est un peu un ancien poste, mais pouvez-vous me dire où exactement vous avez inséré la ligne de code ci-dessus? THX.


Dans le fichier app.config dans la section


Je pense que c'est la vraie réponse. Le problème semble être que si vous laissez le stockage avec sa valeur par défaut ("fichier"), le gestionnaire tente de créer un fichier et de le servir au client. Si l'utilisateur n'a pas d'autorisation de créer des fichiers sur l'emplacement du serveur spécifié dans le réglage de l'application de chargeur de caractères de caractères, le tout échoue. Mais ce que nous voulons probablement, c'est que le serveur crée l'image en mémoire et de l'alimenter au client à partir de là. Pas besoin de créer un fichier physique dans les problèmes d'autorisation de fichier.



0
votes
  <controls>
        <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
          assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </controls>
try this: change Version=4.0.0.0  to Version=3.5.0.0

1 commentaires

Cela ne s'appliquerait que si vous utilisiez .NET 3.5 ne serait-il pas?



0
votes

Essayez ceci, il a été résolu dans le cas d'une erreur d'exécution Web.config

<pre>
<add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=true;Url=~\temp\"


0 commentaires