我正在使用localReport打印PDF(SQL REPORTVIEWER)。它在localhost上运行正常。当我将应用程序移动到Production(64位Windows 2008)时,它给了我一个错误。 (见下文)
我把renderbytes放在USERCONTROL的Session中,然后我做window.open('Program1.aspx')......
在Program1.aspx的页面加载中,我尝试检索Session变量并处理.... 我认为这个语句导致错误“Response.BinaryWrite(...)etc。”。
它适用于我的本地电脑(Vista 32bits)......
有人可以请错误说明什么吗?如何在生产中解决这个问题??????
谢谢..USERCONTROL1.ASCX
byte [] renderedBytes;
renderedBytes = localReport.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
Session["report"] = Print.RenderReport(listEnt, Language);
PROGRAM2.ASPX
protected void Page_Load(object sender, EventArgs e)
{
string extension = "PDF";
Response.ContentType = "application/pdf";
// set the MIME type here
Response.AddHeader("content-disposition", "inline: filename=Test." + extension);
Response.BinaryWrite((byte[])Session["report"]);
Response.End();
}
>'/'应用程序中的服务器错误。
你调用的对象是空的。
描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
堆栈追踪:
[NullReferenceException:对象引用未设置为对象的实例。] System.Web.HttpResponse.BinaryWrite(Byte [] buffer)+13 ConfederatieBouw.CustomModules.Controle_InhoudingsPlicht.WebForm1.Page_Load(Object sender,EventArgs e)+191 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35 System.Web.UI.Control.OnLoad(EventArgs e)+99 System.Web.UI.Control.LoadRecursive()+50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsync
答案 0 :(得分:1)
您是否在生产中运行Web场?如果是这样,你如何存储会话状态?默认值为InProc,这意味着会话将仅存在于服务器场中的一台服务器上,如果后续请求转到另一台服务器,则可以解释该问题。修复此方案,您需要设置某种可以跨服务器共享的会话状态(例如会话状态服务器或SQL Server会话状态)。
以下是各种会话状态提供程序的一些信息: http://msdn.microsoft.com/en-us/library/ms178586.aspx
答案 1 :(得分:0)
会话[“报告”]为空。您没有在用户控件中将其设置为renderBytes。
此外,将它存储在会话中是一个非常糟糕的主意。必须对二进制数据进行序列化/编码,然后在设置Session []值时进行反序列化/取消编码,该值表现不佳。在用户控件上创建一个属性以接受报表对象并将其写入输出流,或者只在页面本身中执行。无论如何,我不确定将它放在用户控件而不是规则类中是有意义的。