0

我正在尝试通过 .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;
    }
}
4

3 回答 3

0

你能检查一下 system.web/httpHandlers 下是否有 ChartImageHandler 的条目吗?如果是,请删除它。

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

<add key="ChartImageHandler" value="storage=file;handler=MvcWebRole1.Codes.ChartImageHandler, MvcWebRole1; webDevServerUseConfigSettings=false;" /> 
于 2013-02-18T00:32:35.367 回答
0

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

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

更多信息请访问http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.launch.aspx

于 2013-02-28T13:55:00.410 回答
0

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

于 2013-02-18T08:38:41.273 回答