.Net图表在另一个会话中生成的访问图像

时间:2012-09-03 09:12:42

标签: asp.net-mvc charts mschart

我有一个要求,我需要访问在一个会话中生成的图表,在另一个会话中。

为了解释,进程A生成一些HTML,其中包含带图像的图表url /ChartImg.axd?i=chart_0_0.png&g=a40f233f40fb4995b737d284f83ab1b7

我有deleteAfterServicing = false和dir = c:\,如果我查看c:\ chart_0_0.png就在那里。

现在进程B(因此在自己的会话中运行)出现了打开HTML文件,图表404s,因为(似乎)图像处理程序将只允许从创建它的会话访问该图表。

有没有办法禁用此行为?

我期待您的回复

卡尔

1 个答案:

答案 0 :(得分:0)

好的,所以我通过以下方式解决了这个问题:

    Public Overrides Sub RenderControl(writer As System.Web.UI.HtmlTextWriter)

        If Me.RenderToFile Then
            'Save it to a file first
            Me.SaveImage(HttpContext.Current.Server.MapPath(RenderToFileLocation),
                         ChartImageFormat.Png)
            'Return the image urn
            writer.Write("<img src=""" & Url.Content(ConfigurationManager.AppSettings("ChartFilePath")) & "?c=" & Url.Content(RenderToFileLocation) & """ />")
        Else
            MyBase.RenderControl(writer)
        End If
    End Sub

然后从那里创建了一个简单的.net MVC处理程序,它返回文件并将其删除         函数索引(ByVal c As String)As ActionResult

        Dim dir = Server.MapPath(ConfigurationManager.AppSettings("ChartFilePath"))
        Dim filepath = System.IO.Path.Combine(dir, c)
        Index = MyBase.File(filepath, "image/png")

        'Delete the file
        Try
            IO.File.Delete(filepath)
        Catch ex As Exception

        End Try
    End Function