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;
}
}
你可以检查一下system.web/httpHandlers下的ChartImageHandler吗?如果是的话,请删除它。
此外,它可能不涉及这个,但在你的web.config部分#1,你不应该提及storage = file;还有,以使它看起来像:
<add key="ChartImageHandler" value="storage=file;handler=MvcWebRole1.Codes.ChartImageHandler, MvcWebRole1; webDevServerUseConfigSettings=false;" />
不,我没有。不,不应该是这样,因为我想使用处理程序而不是存储。处理程序应该提供详细信息。 (我可以使用云缓存,blob等) – cilerler 2013-02-18 03:08:16
这可能是一个愚蠢的问题要问,但是当你试图打在你的处理器一个破发点,你实际上是打开一个页面,其中包括ASP.NET图表?只有在加载图表时,图表处理程序才会被击中。
使用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
对不起,这也不会工作。由于它没有进入ChartImageHandler。如果可以的话,它应该能够抛出异常。 – cilerler 2013-02-28 17:51:05
你是如何调用类?拨打电话的线路上是否有断点? – 2013-02-26 20:30:53
从控制器调用它,并且它确实如此。 – cilerler 2013-02-27 00:25:43
你能提供我们的控制器代码吗? – 2013-02-27 18:43:26