2017-11-21 5 views
0

例外と内部例外メッセージとスタックトレースの両方があります。私がビジュアルスタジオで走っているとき、これは本当にうまく動作します。私はReportViewerForMvcを使用し、Nuget経由でインストールしました。だから、私はすべての.dllを参照している。私がうわーと一緒にホストしたら、それはうまくいきません。MVC 5アプリケーションRDLCレポートはホスティング後に例外をスローしますが、ビジュアルスタジオでうまく動作します

タイプ 'System.Web.HttpUnhandledException'の例外がスローされました。 System.Web.UI.Page.ProcessRequestで System.Web.UI.Page.ProcessRequestMain(ブール includeStagesBeforeAsyncPoint、ブールのincludeStagesAfterAsyncPoint)
(でSystem.Web.UI.Page.HandleError(例外e)で

ブール includeStagesBeforeAsyncPoint、ブールのincludeStagesAfterAsyncPoint) System.Web.UI.Page.ProcessRequestWithNoAssert(のHttpContextコンテキスト)でSystem.Web.UI.Page.ProcessRequest()で
System.Web.UI.Page.ProcessRequestで
(のHttpContextコンテキスト)at ASP.reportviewerwebform_aspx.ProcessRequest(HttpContext context)at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()System.Web.HttpApplication.ExecuteStepで (IExecutionStepステップ、 ブール& completedSynchronously) エラーがローカルレポート処理中に発生しました。 Microsoft.Reporting.WebForms.LocalReport.EnsureExecutionSessionで

() ReportViewerForMvcでReportViewerForMvc.ReportViewerExtensions.SetProperties(LocalReport localReport、LocalReport特性)でMicrosoft.Reporting.WebForms.LocalReport.GetParameters()で
。 ReportViewerForMvc.ReportViewerWebForm.Page_LoadでReportViewerForMvc.ReportViewerWebForm.BuildReportViewer()でReportViewerExtensions.SetProperties(レポートビューアー レポートビューアー、レポートビューアープロパティ)(オブジェクト送信者、 のEventArgs e)の System.Web.Util.CalliEventHandlerDelでSystem.Web.UI.Control.OnLoad(EventArgs e)の のSystem.Web.UI.Control.LoadRecursive()ののSystem.Web.UI.Page.ProcessRequestMainでのegateProxy.Callback(Object sender、 EventArgs e) Boolean includeStagesBeforeAsyncPoint、Boolean includeStagesAfterAsyncPoint)

この問題を解決するのを手伝ってください。私はすでに多くのスレッドを経ていますが、私はそれが何ができるかを推測することができ、本当に原因が何であるかを知らずソリューション

+0

RDLCレポートファイルがターゲット環境に適切に配備されていないか、実行ディレクトリが変更されたときに予想されるフォルダ(相対パス)に存在しない可能性があります。 – thmshd

+0

Bingo !!!私はそれを確認することを忘れました。はい、それは問題でした。それを答えとしてください。私は受け入れるだろう!それを常に公開させるには?アウトプット・ディレクトリへのコピー - 常にコピーすることで達成できますか? –

+0

私の答えを追加しました。MSDeployベースの展開では、私たちのケースで 'Copy if newer'で十分です – thmshd

答えて

1

を見つけることができませんでした。 RDLCレポートファイル(例:MyReport.rdlc)がターゲット環境に正しく配備されていないか、実行ディレクトリが変更されたときに予想されるフォルダ(相対パス)に存在しない可能性があります。

は、Visual Studioで、 Copy to Output Directoryプロパティが Copy if newer/alwaysに設定されていることを確認し、IIS上で実行する際にローカルに、彼らは bin\Debug以内おそらくしている間、ファイルは、 \binディレクトリ内に表示される可能性があります。

我々のアプリケーションでは、MyReport.rdlcのファイル名を渡した場合、我々はそれが設定可能にし、このようなパス構築:web.configファイルで

var rdlcFullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationManager.AppSettings["ReportingPath"], "MyReport.rdlc"); 

、パスの設定を追加します。

<add key="ReportingPath" value="bin\Reports" /> 

ターゲット環境と一致するように、すべての環境の設定を上書きできます。

関連する問題