可以尝试使用HttpContext.Current.Request.PhysicalApplicationPath来代替Server.MapPath,其效果是一样的。
example:
System.IO.DirectoryInfo path = new System.IO.DirectoryInfo(HttpContext.Current.Request.PhysicalApplicationPath+"ChartImages\\");
对“net使用DotNetCharting控件生成报表统计图总结”的答复
有一个比较大的问题:
用这种方法,每打开一次页面就要生成一次图形,如果成千上万的人浏览的话会把服务器累死,并且都是做的重复的无用功。
我用的方法是,用DotNetCharting生成一个图形,如果是最新的,就不用再生成了,如果不是最新的,就再生成一下。
我觉得这是一个变通的方法,不知道DotNetCharting中有没有更好的方法。
@hhhh63
这种方法在思路上可能会好一些,但最好也把代码贴出来看看吧!
请问楼主:我使用这个控件后,图形可以显示出来。但是发现一个小问题。就是在图形的左上方和图形的下面都隐含了超链接,鼠标移动到这两个区域后,点击都会链接到
http://www.dotnetcharting.com/这网站上。
很奇怪,这是和破解有管吗?十分恳请您能给予解答一下,在此先谢谢了。
@足够有晋
这和破解版本有关,到网上去找一个好一点的破解版本应该可以解决这个问题,我有时间也去找一下,再把它共享出来吧!
@hhhh63
关于生成统计图无法自动删除的问题。每次生成统计图,都会生成一个图片,那么将会生成大量的无用的图片。这时就要手动删除这些文件了,包括不在TempDirectory设置文件夹里的No Data图片,需要过一会清除。但是如果访问量大的话,也不是办法。我现在的处理方法是,当图片数达到某个数量时让它自己删除,这样相对来说应该会好些.代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string dirPath;
if (!Page.IsPostBack)
{
dirPath = Server.MapPath("../") + @"admin\temp\";
if (Directory.Exists(dirPath))
{
DirectoryInfo dir = new DirectoryInfo(dirPath);
if (dir.GetFiles().Length > 50)
{
foreach (FileInfo f in dir.GetFiles())
{
f.Delete();
}
}
}
dirPath = Server.MapPath("../") + @"admin\";
DirectoryInfo adminDir = new DirectoryInfo(dirPath);
foreach (FileInfo fi in adminDir.GetFiles())
{
if (fi.Extension.ToLower() == ".png")
{
fi.Delete();
}
}
}
}