asp.net MVC服务动态图像无法在服务器上运行(仅限本地)

时间:2012-06-29 02:05:41

标签: asp.net-mvc image dynamic asp.net-mvc-2 devexpress

我正在尝试使用DevExpress仪表控件在MVC中工作。实际的教程住在这里:http://www.devexpress.com/Support/Center/p/E2976.aspx。它是通过xml文件cretate设置完成的,并构建一个图像,然后将其存储在控制器的内存流中,并推送到生活在View上的img标记。这个img标签src attr正在调用Url.Action来调用Render the Gauge的动作。控制器中的代码如下所示

[OutputCache(Duration = 1000, VaryByParam = "param")]
        public ActionResult RenderGauge(double param)
        {
            ASPxGaugeControl ctrl = new ASPxGaugeControl();
            param = param * 100;
            ctrl.RestoreLayoutFromXml(Server.MapPath("~/App_Data/gauge.xml"));
            (ctrl.Gauges["myGauge"] as CircularGauge).Scales["myScale"].Value = (float)param;

            MemoryStream stream = new MemoryStream();
            ctrl.ExportToImage(stream, ImageFormat.Jpeg);

            stream.Seek(0, SeekOrigin.Begin);
            return new FileStreamResult(stream, "image/jpeg");
        }

View看起来像这样:

<div style="background: 1px solid Blue; width; 240px;">
<%  double data = Model.ListData[0].Percentage; %>
                    <img src='<%: Url.Action("RenderGauge", "GetDashBoard", new RouteValueDictionary(new { param = data })) %>'
                        alt="Gauge showing data" id="gaugeImg1" />

    </div>

同样,这一切都在我的本地机器上运行,但在服务器上呕吐。 src attr似乎渲染得很好:

<img src='/CINet/CorporateDashBoard/GetDashBoard/RenderGauge?param=0.7'
                        alt="Gauge showing data" id="gaugeImg1" />

我还想补充一点,这是IIS 7,MVC 2,我尝试添加我在互联网上找到的特殊处理程序,但没有成功:

<handlers>
      <add type="DevExpress.Web.ASPxUploadControl.ASPxUploadProgressHttpHandler, DevExpress.Web.v11.2, Version=11.2.11.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" name="ASPxUploadProgressHandler" preCondition="integratedMode" />
      <add name="PNG Images" path="*.png" verb="*" type="System.Web.StaticFileHandler" resourceType="Unspecified" preCondition="integratedMode" />
 </handlers>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

感谢大家提出的问题,这很奇怪,因为它从不呕吐并且直接在那里产生了与'x'相同的结果,并且显示了替代文字但没有图像。原来是DevExpress的Gauge dll没有被本地复制到服务器上。本来以为我会得到一个抱怨的例外,但是哦。希望这有助于其他人