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

问题描述:

我试图实现IChartStorageHandler通过.Net4.5/MVC4应用基于http://goo.gl/WAaplIChartStorageHandler实现,处理程序不会触发

我不能够能打到无断点在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; 
    } 
} 
+0

你是如何调用类?拨打电话的线路上是否有断点? – 2013-02-26 20:30:53

+0

从控制器调用它,并且它确实如此。 – cilerler 2013-02-27 00:25:43

+0

你能提供我们的控制器代码吗? – 2013-02-27 18:43:26

你可以检查一下system.web/httpHandlers下的ChartImageHandler吗?如果是的话,请删除它。

此外,它可能不涉及这个,但在你的web.config部分#1,你不应该提及storage = file;还有,以使它看起来像:

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

不,我没有。不,不应该是这样,因为我想使用处理程序而不是存储。处理程序应该提供详细信息。 (我可以使用云缓存,blob等) – cilerler 2013-02-18 03:08:16

这可能是一个愚蠢的问题要问,但是当你试图打在你的处理器一个破发点,你实际上是打开一个页面,其中包括ASP.NET图表?只有在加载图表时,图表处理程序才会被击中。

+0

使用MVC并在控制器上创建图表。只要我调用图表控制器,它应该调用处理程序。没有什么与位置设置不同,如果你设置它,它应该工作,即使你没有页面控制。 – cilerler 2013-02-18 12:38:53

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

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

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

+0

对不起,这也不会工作。由于它没有进入ChartImageHandler。如果可以的话,它应该能够抛出异常。 – cilerler 2013-02-28 17:51:05