日期:2014-05-17  浏览次数:20409 次

ASP.NET MVC抓取动态生成的图片---涉及权限问题
本帖最后由 idonotknowwhatislife 于 2013-08-13 16:51:48 编辑
    在做一个ASP.NET MVC项目里,有多个模块,由多个部门合作开发,
    现在遇到的问题涉及到3个模块:统计分析、公告管理、信息查看,其中统计分析、公告管理需要用户登录,未登录则跳转到登陆页,而信息查看不需要用户登录。
统计分析中,有些页面有一些统计图表,是用MvcChart动态生成的图片,实现是:
        1. 页面上的图片类似这样:
<img src="/Analysis/SingleAnalysis/GetResultByYear?ID=3&year=2012&guid=DEBF000F-4C18-64E7-9B05-796B3300D2C7"/>
 
        2. Action GetResultByYear 根据传入的参数,得到相关的一组数值后,生成图片

        [NeedSignIn]
        public ActionResult GetResultByYear(int ID= 0, int year = 0)
        {
            string XTitle = "时间(单位:月份)";
            string YTitle = ControllerHelp.GetYTitle(int.Parse(nodeType));
            var values = busiSvc.GetResultByYear(ID, year);
            return File(MvcChart.DrawSeries(values, "", XTitle, YTitle, SeriesChartType.Column, true), "image/*");
        }

    “动态生成图片”(GetResultByYear)是需要验证用户登录状态的,未登录的话,会跳转到登录页面。
    在另外一个公告管理模块里,需要抓取这些图片,然后插入到公告内容中,开始我是直接取的图片的src添加到公告内容中,也就是
<img src="/Analysis/SingleAnalysis/GetResultByYear?ID=3&year=2012&guid=DEBF000F-4C18-64E7-9B05-796B3300D2C7"/>

    但是这样有个问题:在信息查看模块中,是不需要登录的,而不登录的情况下,查看包含上面这类图片的时候,图片加载会失败。
    统计分析 这个模块是另外一个部门已经开发完成的,那么,在不修改统计分析模块代码的情况下,怎么解决这个问题呢?
    开始我想到了一个方法:在公告管理模块对应的Action里,建一个WebClient,然后把图片保存到服务器,再根据文件路径生成图片的url,但实际运行的时候,发现下载的只是登陆页面……

            System.Net.WebClient client = new System.Net.WebClient();
            client.DownloadFile(imgUrl, filePath);

如何使WebClient继承当前用户的登录状态呢?

或者,用其它方式来解决这个问题?
ASP.NET?MVC 图片 权限