0

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

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

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

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

有没有办法禁用这种行为?

我期待着您的回复

卡尔

4

1 回答 1

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 处理程序,它返回文件并将其删除 Function Index(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
于 2012-09-03T09:40:17.410 回答