кристалл сообщает об ошибке загрузки при хостинге на сервере - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть веб-приложение, которое я разработал и которое использует Crystal Reports 13.0.19 для VS 2013. Отчеты на моем компьютере работают нормально, но при публикации веб-приложения при загрузке отчета появляется следующая ошибка:

Object reference not set to an instance of an object.

Мой код ReportViewer:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        try
        {
            _rptFile = (ReportDocument)Session[SessionInfo.ReportFile];
            var hParametre = (Hashtable)Session[SessionInfo.ReportParam];
            var param = new ParameterValues();
            var val = new ParameterDiscreteValue();

            foreach (ParameterFieldDefinition obj in _rptFile.DataDefinition.ParameterFields)
            {
                if (hParametre.ContainsKey(obj.Name))
                {
                    val.Value = hParametre[obj.Name].ToString();
                    param.Add(val);
                    obj.ApplyCurrentValues(param);
                }
            }

            CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
            CrystalReportViewer1.ReportSource = _rptFile;
            //   _rptFile.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, false, "ExportedReport");

            Session.Remove(SessionInfo.ReportFile);
            Session.Remove(SessionInfo.ReportParam);
            Session[SessionInfo.ReportFile] = _rptFile;
        }
        catch (Exception ex)
        {
            lblMessage.Text = ex.Message;
        }
    }
    else if (Session[SessionInfo.ReportFile] != null)
    {
        _rptFile = (ReportDocument)Session[SessionInfo.ReportFile];
        CrystalReportViewer1.ReportSource = _rptFile;
    }
}

Эта функция будет вызывать

DataSet1 _ds = new DataSet1();

ReportDocument _rptdoc = new ReportDocument();
private string _rptPath = "";
public string PrintReport(string reportFileName, string dataTableName, string parameterName, string procedureName, string titleName, string dateRange, string dataReadBy)
{
    _rptdoc = new ReportDocument();
    _ds = new DataSet1();
    _rptPath = System.Web.HttpContext.Current.Server.MapPath("~/Report/ReportFile/" + reportFileName + "");
    _rptdoc.Load(_rptPath);
    new DbConnection().GetDataFromProc(_ds.Tables["" + dataTableName + ""], "" + parameterName + "", "" + procedureName + "", dataReadBy);
    _rptdoc.SetDataSource(_ds.Tables["" + dataTableName + ""]);
    _rptdoc.SetDataSource(_ds.Tables["" + dataTableName + ""].DefaultView);
    var hParameter = new Hashtable();
    new DbConnection().AddParameters(hParameter, ReturnFieldValue("tbl_COMPANY_INFORMATION", "", "Name"), ReturnFieldValue("tbl_COMPANY_INFORMATION", "", "Address"), titleName, dateRange);

    System.Web.HttpContext.Current.Session.Add(SessionInfo.ReportFile, _rptdoc);

    System.Web.HttpContext.Current.Session.Add(SessionInfo.ReportParam, hParameter);
    return "";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...