tool net microsoft ejemplos datavisualization chart asp asp.net charts azure

asp.net - net - system web datavisualization version 3.5 0.0 download



asp.net: Directorio temporal no válido en la configuración del controlador de gráfico (10)

Actualice la configuración de su aplicación a esto y vea si eso soluciona su problema

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

Recibo este error Invalid temp directory in chart handler configuration [c:/TempImageFiles/]. Mientras ejecuta mi código.

Inicialmente recibí No http handler was found for request type ''GET'' error que lo resolví al no recomendar ningún controlador http

Pero ahora estoy obteniendo el error anterior. Los detalles del error son

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.

El stackTrace de este error

[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

¿Alguien puede decirme cómo resolver este problema ... Debería crear un directorio temporal manualmente o qué debo hacer ...

Hola, smarx, lo compruebo ... Me pidieron que cambiara

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

en el archivo de configuración web ...

Pero no tengo esta línea en mi configuración web

Solo tengo esto para definir el gráfico

<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" />

Qué debería hacer ahora....



El tiempo todavía progresa y la gente todavía tiene recomendaciones. Me encontré con este problema durante una migración, así que pensé en agregar dos centavos.

¿Por qué almacenarlo en el sistema de archivos y no solo guardarlo en la memoria?

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

Si el sistema de archivos es un problema en Azure, entonces no lo use.


Haz lo siguiente

1) Agregue o edite la siguiente clave en web.config.

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

2) Dé privilegios de escritura a IIS_User a este directorio, para eso haga lo siguiente:

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.

Ahora ha configurado el directorio y dado permiso de escritura a IIS para escribir archivos de imagen temporales en esta carpeta.

Debería funcionar ahora.


Necesita utilizar un directorio temporal que se encuentre dentro de la jerarquía de carpetas de su aplicación web. En Windows Azure, no tiene acceso a c: / TempImages, por lo que no va a funcionar.

Creé una muestra rápida de gráficos ASP.Net que funcionan en Windows Azure aquí: http://code.msdn.microsoft.com/azurecharts

Todavía puede usar el almacenamiento de archivos para las imágenes temporales:

Si no desea descargar la muestra, estos son los pasos para que funcione:

  1. En su Solución, cree una carpeta (llamada TempImages , por ejemplo).
  2. Agregue un archivo ( temp.txt , o lo que sea) a esta carpeta. Las herramientas de desarrollo no parecen publicar directorios vacíos.
  3. Establezca la ubicación de la imagen de su gráfico en:

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

  4. Agregue lo siguiente a appSettings en su web.config :

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

  5. Asegúrese de que lo siguiente esté en system.web / assemblies :

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

  6. Asegúrese de que lo siguiente esté en system.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. Asegúrese de que lo siguiente esté en system.webServer / handlers
    <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"/>

El código que cargué en code.msdn.com debería ser suficiente como un ejemplo.


Puede evitar el almacenamiento temporal de imágenes temporales mediante el uso de BinaryStreaming.
Google debería hacer el resto.
Me funcionó en Linux, donde lanzó una excepción InvalidDirectory para rutas de Linux.

(RenderType = "BinaryStreaming")

<asp:Chart ID="ChartDIN277" runat="server" Width="500" Height="200" RenderType="BinaryStreaming"> <Series> <asp:Series ChartArea="ChartArea1" ChartType="Pie" Name="Area" XValueMember="Label" YValueMembers="Area" IsVisibleInLegend="false"> </asp:Series> </Series> <ChartAreas> <asp:ChartArea Name="ChartArea1"> <Area3DStyle Enable3D="True" LightStyle="Realistic" /> </asp:ChartArea> </ChartAreas> </asp:Chart>

Código detrás:

protected void Page_Load(object sender, EventArgs e) { FillChartFromDataBase(); } public void FillChartFromDataBase() { System.Data.DataTable table = new System.Data.DataTable(); table.Columns.Add("Area", typeof(double)); table.Columns.Add("Label", typeof(string)); System.Data.DataRow row = table.NewRow(); row["Area"] = 791; row["Label"] = "HNF 1"; table.Rows.Add(row); row = table.NewRow(); row["Area"] = 978; row["Label"] = "HNF 2"; table.Rows.Add(row); row = table.NewRow(); row["Area"] = 1262; row["Label"] = "HNF 3"; table.Rows.Add(row); row = table.NewRow(); row["Area"] = 1650; row["Label"] = "HNF 4"; table.Rows.Add(row); row = table.NewRow(); row["Area"] = 2519; row["Label"] = "HNF 5"; table.Rows.Add(row); row = table.NewRow(); row["Area"] = 6071; row["Label"] = "HNF 6"; table.Rows.Add(row); // Set chart custom palette ChartDIN277.Palette = System.Web.UI.DataVisualization.Charting.ChartColorPalette.None; //ChartDIN277.PaletteCustomColors = New System.Drawing.Color() {System.Drawing.Color.Red, System.Drawing.Color.Blue} ChartDIN277.PaletteCustomColors = COR.Design.ColorPalette.Generate(System.Drawing.Color.ForestGreen, table.Rows.Count - 1); // http://student.csdn.net/space.php?uid=383581&do=blog&id=32768 //ChartDIN277.Palette = System.Web.UI.DataVisualization.Charting.ChartColorPalette.None; //ChartDIN277.PaletteCustomColors = new Color[] { System.Drawing.Color.Red, System.Drawing.Color.Blue}; //// Hide all series empty data point by making them transparent //Chart.Series[0].EmptyPointStyle.Color = Color.Transparent; //// Set color for the whole series //Chart.Series[0].Color = Color.Green; //// Set color of a single data point //Chart.Series[0].Points[5].Color = Color.Red; this.ChartDIN277.DataSource = table; this.ChartDIN277.DataBind(); }




o crea un manejador de ashx, como este

Imports System.Web Imports System.Web.Services Public Class ChartCreator Implements System.Web.IHttpHandler Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest context.Response.ContentType = "image/jpeg" Dim yValues As Double() = {10, 27.5, 7, 12, 45.5} Dim xNames As String() = {"Mike", "John", "William", "George", "Alex"} Dim mychart As System.Web.UI.DataVisualization.Charting.Chart mychart = New System.Web.UI.DataVisualization.Charting.Chart Dim mychartarea As New System.Web.UI.DataVisualization.Charting.ChartArea() mychartarea.Name = "ChartArea1" mychartarea.BackColor = Drawing.Color.Transparent mychart.ChartAreas.Add(mychartarea) Dim myseries As New System.Web.UI.DataVisualization.Charting.Series() myseries.ChartArea = mychartarea.Name myseries.ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Pie myseries.Name = "Series1" mychart.Series.Add(myseries) mychart.BackColor = Drawing.Color.Transparent mychart.Series(0).Points.DataBindXY(xNames, yValues) mychart.Series(0).Points.DataBindXY(xNames, yValues) '' http://msdn.microsoft.com/en-us/library/system.web.ui.datavisualization.charting.rendertype.aspx '' ImageTag, BinaryStreaming, ImageMap '' mychart.RenderType = System.Web.UI.DataVisualization.Charting.RenderType.BinaryStreaming mychart.ImageType = System.Web.UI.DataVisualization.Charting.ChartImageFormat.Png ''mychart.SaveImage(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "mychart.png")) mychart.SaveImage(context.Response.OutputStream) ''getResizedImage(context.Request.PhysicalPath,Width,Height); ''context.Response.OutputStream context.Response.End() End Sub ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Get Return False End Get End Property End Class


Si cambia la siguiente línea

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

a

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

no funciona, luego cambie el valor del atributo "storage = file"; a "almacenamiento = memoria"; . Seguramente funcionará porque ahora estás usando memoria, en lugar de archivo.


Simplemente cree una carpeta con el nombre ''TempImageFiles'' en la unidad C.


Tuve el mismo problema, mi problema era que mi proveedor tenía carpetas especiales con derechos de escritura, así que cambié la carpeta TempImagesFile a su carpeta predeterminada y funcionó.

En mi caso, la carpeta con derechos de escritura se llamaba cargar

ediciones web.config:

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

Espero que esto también pueda ayudar a otros;)


intente agregar esta clave a su web.config

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

en lugar de la predeterminada:

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