2013-02-17 2 views
0

트리거되지 않습니다 내가 아래 수업에서 설정 한 그래서 제 질문은 "강제로 사용할 수있는 트릭이 있습니까?" 고맙습니다!IChartStorageHandler 구현, 핸들러는 내가 중단 점을 전혀 공격하지 할 수 없습니다 <a href="http://goo.gl/WAapl" rel="nofollow">http://goo.gl/WAapl</a></p> <p>에 따라 푸른에 사용하는 .Net4.5/MVC4 응용 프로그램을 통해 <b>을 구현하는 IChartStorageHandler</b>을 시도하고있다

당신은 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

에서

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

더 어떻게 클래스를 호출? 전화를 걸던 회선에서 중단 점이 발생 했습니까? –

+0

컨트롤러에서 호출하고, 그렇습니다. – cilerler

+0

컨트롤러 코드를 제공해 주시겠습니까? –

답변

0

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

0

이 물어 바보 같은 질문이 될 수도 있지만 당신은 당신의 핸들러에 브레이크 포인트를 공격하려고 할 때 당신은 실제로 ASP.NET 차트가 포함 된 페이지를 열고 있습니다 ? Chart 핸들러는 차트가로드 될 때만 히트됩니다.

+0

MVC를 사용하여 컨트롤러에서 차트를 생성합니다. 차트 컨트롤러를 호출하는 한 처리기를 호출해야합니다. 아무것도 위치 설정과 다르지 않습니다. 설정 한 경우 페이지 컨트롤이 없어도 작동합니다. – cilerler