我有一个要求,我需要访问在一个会话中生成的图表,在另一个会话中。
为了解释,进程A生成一些HTML,其中包含带图像的图表url /ChartImg.axd?i=chart_0_0.png&g=a40f233f40fb4995b737d284f83ab1b7
我有deleteAfterServicing = false和dir = c:\,如果我查看c:\ chart_0_0.png就在那里。
现在进程B(因此在自己的会话中运行)出现了打开HTML文件,图表404s,因为(似乎)图像处理程序将只允许从创建它的会话访问该图表。
有没有办法禁用此行为?
我期待您的回复
卡尔
答案 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