IChartStorageHandler实现,处理程序不会触发

时间:2013-02-17 04:14:31

标签: asp.net-mvc azure httphandler mschart charts

我正在尝试通过.Net4.5 / MVC4应用程序实现 IChartStorageHandler ,以便在基于http://goo.gl/WAapl的Azure上使用

我无法点击我在下面的课程中设置的断点。所以我的问题是,“有什么技巧可以用来逼迫它”吗?谢谢!

您可以在http://msdn.microsoft.com/en-us/library/dd456629.aspx

找到有关参数的详细信息
namespace MvcWebRole1.Codes
{
    public class ChartImageHandler : IChartStorageHandler
    {

        public ChartImageHandler()
        {
            throw new NotImplementedException();
        }

        #region IChartStorageHandler Members

        public void Delete(string key)
        {
            throw new NotImplementedException();
        }

        public bool Exists(string key)
        {
            throw new NotImplementedException();
        }

        public byte[] Load(string key)
        {
            throw new NotImplementedException();
        }

        public void Save(string key, byte[] data)
        {
            throw new NotImplementedException();
        }

        #endregion

    }
}

web.config第1部分

  <appSettings>
    <add key="ChartImageHandler" value="handler=MvcWebRole1.Codes.ChartImageHandler, MvcWebRole1; webDevServerUseConfigSettings=false;" />
  </appSettings>

web.config第2部分

  <system.webServer>
    <handlers>
      <remove name="ChartImageHandler"/>
      <add name="ChartImageHandler" path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode" />
    </handlers>
  </system.webServer>

控制器

public ActionResult ChartImage()
{
    // get data 
    string path = HttpContext.Server.MapPath("~/App_Data/Test.csv");
    IEnumerable<Bar> data = BarRepository.Get(path);

    // generate chart
    byte[] chartResult = data.Generator();

    // return the chart
    return File(chartResult, "image/png");
}

public static class ChartOperations
{
    private static Chart _chart1;

    public static byte[] Generator(this IEnumerable<Bar> data)
    {
        // initial variable tasks
        _chart1 = new Chart() {DataSource =  data.ToList()};

        // generate the chart
        DoTheHardWork();

        // save chart to memory string
        var image = new MemoryStream();
        _chart1.SaveImage(image);
        var result = image.GetBuffer();

        return result;
    }
}

3 个答案:

答案 0 :(得分:0)

您可以检查在system.web / httpHandlers下是否有ChartImageHandler的条目吗?如果是,那么请将其删除。

另外,它可能与此无关,但在web.config第1部分中,你不应该提到storage = file;以及它看起来像:

<add key="ChartImageHandler" value="storage=file;handler=MvcWebRole1.Codes.ChartImageHandler, MvcWebRole1; webDevServerUseConfigSettings=false;" /> 

答案 1 :(得分:0)

这可能是一个愚蠢的问题,但是当你试图在你的处理程序中找到一个断点时,你实际上是在打开一个包含ASP.NET Charts的页面吗?只有在加载图表时才会触发图表处理程序。

答案 2 :(得分:0)

也许你可以在创建类后立即启动调试器?

public ChartImageHandler()
{
    System.Diagnostics.Debugger.Launch();
    //throw new NotImplementedException();
}

更多http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx