我正在使用Visual Studio 2008,mvc 2附帶的Crystal報告。 我想要用戶單擊鏈接時生成PDF報告。登錄失敗。詳細信息:28000:[Microsoft] [ODBC SQL Server驅動程序] [SQL Server]用戶'用戶'登錄失敗
這是我的方法來配置水晶報表
public ReportClass ConfigureReportClass(string strReportPath, object[] objParameters)
{
ReportClass rptH = new ReportClass();
try
{
rptH = new ReportClass();
rptH.FileName = strReportPath;
int Count = 0;
rptH.Load();
if (objParameters == null)
return rptH;
foreach (object obj in objParameters)
{
ParameterField param = rptH.ParameterFields[Count++]; // first param
param.AllowCustomValues = true;
ParameterDiscreteValue Disparam = new ParameterDiscreteValue();
Disparam.Value = obj;
param.CurrentValues.Add(Disparam);
}
}
catch (Exception ex)
{
throw ex;
}
return rptH;
}
而這一次將其轉換到PDF
public System.IO.Stream GetPDFStream(CrystalDecisions.CrystalReports.Engine.ReportClass rptClass)
{
System.IO.Stream stream = rptClass.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
return stream;
}
而這一次是在控制我的行動方法
public FileResult GetComplaintFile(String ComplaintNumber)
{
HomeBLLC objHomeBLLC = new HomeBLLC();
ReportClass rptH = objHomeBLLC .ConfigureReportClass(Server.MapPath("~/Views/Complaint/ComplaintReport.rpt"), new object[] { ComplaintNumber });
return File(objHomeBLLC.GetPDFStream(rptH),"application/pdf");
}
我可以在visual studio中的設計視圖中看到我的報告預覽,但在運行時得到異常
Logon failed.
28000:[Microsoft] [ODBC SQL Server驅動程序] [SQL Server]登錄用戶'用戶'失敗。 錯誤文件C:\ Windows \ TEMP \ ComplaintReport {5BDD522D-04DA-48CD-9F43-A9C648F195D9} .rpt: 無法連接:不正確的登錄參數。在CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(例外五) 在CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) 在CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) 在CrystalDecisions.CrystalReports.Engine.ReportDocument。在F:\ myapp \ BLL \ Home \ HomeBLLC.CS中的myapp.BLL.Home.HomeBLLC.GetPDFStream(ReportClass rptClass)上的CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportFormatType formatType) (ExportOptions options) 1082
at myapp.Controllers.ComplaintController.GetComplaintFile(String ComplaintNumber)in F:\ myapp \ Controllers \ ComplaintControl ler.cs:line 709 at myapp.Controllers.ComplaintController.Complaint()in F:\ myapp \ Controllers \ ComplaintController.cs:line 76 at lambda_method(ExecutionScope,ControllerBase,Object []) at System.Web.Mvc .ActionMethodDispatcher.Execute(ControllerBase controller,Object [] parameters) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 parameters) at System.Web.Mvc.ControllerActionInvoker。 <> C_ DisplayClassd.b _a() 在System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter濾波器,ActionExecutingContext preContext,函數功能1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
1個濾波器,ActionDescriptor actionDescriptor,IDictionary`2參數) 在System.Web.Mvc。 ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,String actionName)
我的DSN配置正確,因爲其他使用相同DSN的應用程序正在正確運行Crystal報表。
在此先感謝