![](/img/trans.png)
[英]Crystal report Issue after deployed ASP.NET MVC application to server
[英]Crystal report fails to load when application is deployed in IIS in ASP.net Mvc app
發布應用程序后出現錯誤。 即使在我下放的同一台計算機上。 在開發時一切正常。
The system cannot find the path specified.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Runtime.InteropServices.COMException: The system cannot find the path specified.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[COMException (0x80004005): The system cannot find the path specified.
]
CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +126
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +315
[CrystalReportsException: Load report failed.]
CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +503
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +1495
CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +99
ProductionTracker.Web.Reports.CrystalReportGenerator.GenerateReportInPDF(DataTable tb, String reportName) in C:\Users\barry\source\repos\ProductionTracker.Web\ProductionTracker.Web\Reports\Controller\CrystalReportGenerator.cs:37
System.Web.Mvc.<>c__DisplayClass1.<WrapVoidAction>b__0(ControllerBase controller, Object[] parameters) +18
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +229
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +35
System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +39
System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +77
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +72
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +387
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +42
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +38
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +188
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +73
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +43
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +73
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +602
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +195
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +128
我試過這個https://stackoverflow.com/a/14602748/10852981 ,但我不知道在我的 mvc 應用程序中添加這個。 我檢查了文件的權限並允許所有人。 我在項目中包含了 .rpt 文件。 我不知道我還應該做什么。
這是我下載文件的代碼
public static void GenerateReportInPDF(DataTable tb, string reportName)
{
using (var reportDocument = new ReportDocument())
{
var reportPath = HttpContext.Current.Server.MapPath("~/") + "Reports//" + reportName;
reportDocument.Load(reportPath);
reportDocument.Database.Tables[0].SetDataSource(tb);
reportDocument.ExportToHttpResponse(ExportFormatType.PortableDocFormat, HttpContext.Current.Response, false, reportName);
reportDocument.Close();
}
}
ProductionTracker.Web.Reports.CrystalReportGenerator.GenerateReportInPDF(DataTable tb, String reportName) in C:\\Users\\barry\\source\\repos\\ProductionTracker.Web\\ProductionTracker.Web\\Reports\\Controller\\CrystalReportGenerator.cs:37
這一行ProductionTracker.Web.Reports.CrystalReportGenerator.GenerateReportInPDF(DataTable tb, String reportName) in C:\\Users\\barry\\source\\repos\\ProductionTracker.Web\\ProductionTracker.Web\\Reports\\Controller\\CrystalReportGenerator.cs:37
看起來不對,因為它來自我的開發回購。 但我不知道該怎么做。
我終於解決了。 我出現錯誤的原因是因為它在發布后將其保存到 bin 文件夾中。 所以我需要相應地改變路徑。 我添加了/bin/
到var reportPath = HttpContext.Current.Server.MapPath("~/") + "Reports//" + reportName;
像這樣 var reportPath = HttpContext.Current.Server.MapPath("~/bin/") + "Reports//" + reportName; 然后它起作用了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.