2011-10-19 16 views
2

運用環境に展開する際にMsChartsを動作させるのに問題があります。ASP.NET MVC:MsChartsが開発環境で作業中ですが、

アプリケーションは、IIS 7.5の.NET 4 ASP.NET MVC 2サイトです。ライブサイト上のチャートでページを実行しようとしたとき、私は次のエラーを取得するしかし私は、Visual Studioの開発サーバー上で実行しているとき

すべてが正常に動作します:

を見回した
Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerWrapper'. 

STACK TRACE: 
at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) 
at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage) 
at System.Web.HttpServerUtilityWrapper.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm) 
at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext) 
at System.Web.Mvc.ViewUserControl.RenderViewAndRestoreContentType(ViewPage containerPage, ViewContext viewContext) 
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass14.b__11() 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) 
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 
at System.Web.Mvc.Controller.ExecuteCore() 
at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.b__4() 
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.b__0() 
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

BASE EXCEPTION: 
No http handler was found for request type 'GET' 

STACK TRACE: 
at System.Web.HttpApplication.MapIntegratedHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig, Boolean convertNativeStaticFileModule) 
at System.Web.HttpServerUtility.Execute(String path, TextWriter writer, Boolean preserveForm) 

私はweb.configをどこに置くのかを決めるために、.NET 4で動作するMVC MsChartsをどのように取得するかについて決定的な答えを見つけるのに苦労しました。それがすべて必要か正しい場所にあるかどうかはわかりません。アプリケーションのルートweb.configファイルには、この(余分なものを除去した後)のようになります。

<?xml version="1.0"?> 

<configuration> 

    <appSettings> 
     <add key="ChartImageHandler" value="storage=file;URL=~/App_Data/MicrosoftChartControls/;timeout=20;" /> 
    </appSettings> 

    <system.web> 

     <compilation debug="true" targetFramework="4.0"> 
      <assemblies> 
       <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </assemblies> 
     </compilation> 

     <httpHandlers> 
      <add 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" validate="false"/> 
     </httpHandlers> 

    <system.web> 
</configuration> 

とルートビュー]フォルダ内の私のweb.configファイルは次のようになります。私のGlobal.asaxの中

<?xml version="1.0"?> 

<configuration> 
    <system.web> 
     <pages> 
      <controls> 
       <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
      </controls> 
     </pages> 
    </system.web> 

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

</configuration> 

.cs私はこれやった:

protected void Application_Start() 
{ 
    RouteTable.Routes.Ignore("{*pathInfo}", new { pathInfo = @"^.*(ChartImg.axd)$" }); 

    // ... 
} 

をそして、このチャートをレンダリングしている私の部分図はModel.GraphChart制御された状態で、次のようになります。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> 

<%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %> 

<h3><%: Model.ReportName %></h3> 

<% chartPanel.Controls.Add(Model.Graph); %> 

<asp:Panel ID="chartPanel" runat="server"></asp:Panel> 

レンダリングされているビューは、効果がある場合は領域内にあります。

答えて

0

ああ、問題を発見しました。私は、ビューのフォルダにあるweb.configファイルに入れていた次のセクション<handlers>

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

アプリのルートディレクトリにあるweb.configファイルにこれを移動するには、それを働かせました。

0

IISで、aspxページ用に必要なマッピングが設定されているかどうかを確認しましたか?

IISマネージャに入る - > [既定のWebサイト - >ハンドラマッピング

+0

サイトの残りの部分は正常に設定されていますか? – ajbeaven

関連する問題