34 votes

asp.net: répertoire temporaire non valide dans la configuration du gestionnaire de graphiques [c: \ TempImageFiles \]

J'obtiens cette erreur Invalid temp directory in chart handler configuration [c:\TempImageFiles\]. Lors de l'exécution de mon code.

Au début, j'ai été prise en No http handler was found for request type ‘GET' error qui je l'ai résolu en se référant pas de gestionnaire http

Mais maintenant j'obtiens l'erreur ci-dessus Les détails de l'erreur sont

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.DirectoryNotFoundException: Invalid temp directory in chart handler configuration [c:\TempImageFiles\].

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

La stackTrace de cette erreur

[DirectoryNotFoundException: Invalid temp directory in chart handler configuration [c:\TempImageFiles\].]
   System.Web.UI.DataVisualization.Charting.ChartHttpHandlerSettings.Inspect() +851
   System.Web.UI.DataVisualization.Charting.ChartHttpHandlerSettings.ParseParams(String parameters) +1759
   System.Web.UI.DataVisualization.Charting.ChartHttpHandlerSettings..ctor(String parameters) +619
   System.Web.UI.DataVisualization.Charting.ChartHttpHandler.InitializeParameters() +237
   System.Web.UI.DataVisualization.Charting.ChartHttpHandler.EnsureInitialized(Boolean hardCheck) +208
   System.Web.UI.DataVisualization.Charting.ChartHttpHandler.EnsureInstalled() +33
   System.Web.UI.DataVisualization.Charting.Chart.GetImageStorageMode() +57
   System.Web.UI.DataVisualization.Charting.Chart.Render(HtmlTextWriter writer) +257
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +144
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +583
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +91
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +410
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +118
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +489
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +84
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +713
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +144
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +583
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +91
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +91
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +410
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +118
   System.Web.UI.Control.Render(HtmlTextWriter writer) +60
   System.Web.UI.Page.Render(HtmlTextWriter writer) +66
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +144
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +583
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +91
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +7761

Quelqu'un peut-il me dire comment résoudre ce problème... Devrais-je créer un répertoire temporaire manuellement ou ce que je dois faire...


Salut smarx, Je vérifie.. Ils m'ont demandé de changer

From   
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />

To
 <add key="ChartImageHandler" value="storage=file;timeout=20;" />

dans le fichier de configuration web de...

Mais je n'ai pas cette ligne dans mon web config

Je n'ai que cela pour la définition graphique

<add name="ChartImg" verb="*" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,     System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  />
<add name="ReportViewer" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler,Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

Que dois-je faire maintenant....

51voto

Dan Gartner Points 560

Vous devez utiliser un répertoire temporaire dans la hiérarchie des dossiers de votre application web. Dans Windows Azure, vous n'avez pas accès à c:\TempImages, de sorte que n'est pas d'aller travailler.

J'ai créé un échantillon rapide de ASP.Net Cartes de travail dans Windows Azure ici: http://code.msdn.microsoft.com/azurecharts

Vous pouvez toujours utiliser le fichier de stockage pour les images temporaires:

Si vous ne voulez pas télécharger l'exemple, voici les étapes à suivre pour le faire fonctionner:

  1. Dans votre Solution, créer un dossier (appelé TempImages, par exemple).
  2. Ajouter un fichier (temp.txt, ou autre) pour ce dossier. Les outils de dev ne semblent pas publier les répertoires vides.
  3. Définir l'emplacement de l'image de votre graphique pour:

    ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)"

  4. Ajoutez ce qui suit à appSettings dans votre site web.config :

    <add key="ChartImageHandler" value="Storage=file;Timeout=20;Url=~/tempImages/;"/>

  5. Assurez-vous que le suivant est dans le système.web/assemblées :

    <add assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

  6. Assurez-vous que le suivant est dans le système.web/httpHandlers :
    <add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

  7. Assurez-vous que le suivant est dans le système.webServer/gestionnaires
    <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

Le code que j'ai téléchargé à code.msdn.com devrait suffire comme un exemple.

15voto

essayez d'ajouter cette clé à votre web.config

  <add key="ChartImageHandler" value="storage=file;timeout=20;" />
 

au lieu de celui par défaut:

 <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
 

13voto

Chaman Saini Points 33

Si vous changez la ligne suivante

 <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
 

à

 <add key="ChartImageHandler" value="storage=file;timeout=20;" />
 

ne fonctionne pas, puis modifiez la valeur de l'attribut "stockage = fichier;" à "stockage = mémoire;" . Cela fonctionnera sûrement parce que maintenant vous utilisez de la mémoire au lieu du fichier.

4voto

Kenni Points 23

J'ai eu le même problème, mon problème était que mon fournisseur avait des dossiers spéciaux avec des droits d'écriture, j'ai donc changé le dossier TempImagesFile en leur dossier par défaut et cela a fonctionné.

Dans mon cas, le dossier avec les droits d'écriture s'appelait upload

Modifications de web.config:

 <appSettings>
    <add key="ChartImageHandler" value="Storage=file;Timeout=20;Url=~/upload/;"/>
</appSettings>
 

J'espère que cela peut aussi aider les autres;)

4voto

Imran Rizvi Points 2886

Faites les suivis

1) Ajoutez ou modifiez la clé suivante dans web.config.

 <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" /
 

2) Donnez des privilèges d'écriture à IIS_User dans ce répertoire, pour cela procédez comme suit:

 a) Go to Windows Explorer.
b) Right click on c:\TempImageFiles Folder.
c) click Properties.
d) Select security tab , click Edit, click Add , Click Advanced, search for IIS_User.
e) Add this IIS_User , give write permission to this user.
f) Save and Close.
 

Vous avez maintenant défini le répertoire et accordé une autorisation d'écriture à IIS pour écrire des fichiers image temporaires dans ce dossier.

Ça devrait marcher maintenant.

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