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....
Consulte esta respuesta en el foro de Windows Azure: http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/thread/92238582-9445-4d15-a5a7-5f24fd4bf646/ .
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:
- En su Solución, cree una carpeta (llamada
TempImages
, por ejemplo). - Agregue un archivo (
temp.txt
, o lo que sea) a esta carpeta. Las herramientas de desarrollo no parecen publicar directorios vacíos. Establezca la ubicación de la imagen de su gráfico en:
ImageLocation="~/TempImages/ChartPic_#SEQ(300,3)"
Agregue lo siguiente a appSettings en su web.config :
<add key="ChartImageHandler" value="Storage=file;Timeout=20;Url=~/tempImages/;"/>
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"/>
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"/>
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/;" />