2010-12-06 2 views
0

localReport를 사용하여 PDF (SQL REPORTVIEWER)를 인쇄하고 있습니다. 그것은 localhost에서 잘 작동합니다. 프로덕션 (64 비트 Windows 2008)으로 응용 프로그램을 이동하면 오류가 발생합니다. 내가 세션을 검색하려고 Program1.aspx의 페이지로드에서Response.BinaryWrite가 생산시 오류를 발생합니다.

... 내가 UserControl을의 세션에 renderedbytes을 넣어

(아래 참조) 나는 window.open ('Program1.aspx')을 할 변수 및 프로세스 .... 이 문장은 "Response.BinaryWrite (...) 등"오류가 발생합니다.

그것은 내 로컬 PC (비스타 32 비트)에서 작동

...

수있는 사람이 오류는 말한다하시기 바랍니다 무엇? 어떻게 생산에서이 문제를 해결할 수 있습니까?

는 ..

USERCONTROL1.ASCX

바이트 [] 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(); 

    } 

서버 오류가 발생했습니다. 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. 설명 : 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 오류 및 코드에서 시작된 위치에 대한 자세한 정보는 스택 추적을 검토하십시오.

예외 정보 : System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

소스 오류 :

처리되지 않은 예외가 현재 웹 요청을 실행하는 동안 생성되었습니다. 예외의 출처와 위치에 관한 정보는 아래의 예외 스택 추적을 사용하여 식별 할 수 있습니다.

스택 추적 :

[NullReferenceException이 : 개체 참조가 개체의 인스턴스로 설정되지.] System.Web.HttpResponse.BinaryWrite (바이트 [완충액) +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 (부울 includeStagesBeforeAsync

+2

당신이 세션 [ "보고서"] = renderedBytes 을 설정 하여서는 아니된다 : 여기

다양한 세션 상태 공급자에 대한 몇 가지 정보입니다? 그렇지 않으면 변수를 설정하고 사용하지 않는 이유는 무엇입니까? – willvv

+0

좋은 점은 willvv이지만, 그 함수가 byte []가 아닌 다른 것을 반환하더라도, 사용자가 NullReferenceException을 얻고 있기 때문에 즉각적인 문제는 아닙니다. 그들이 byte []가 아닌 무언가를 캐스팅하려고한다면 그들은 InvalidCastException을 얻게 될 것입니다. 현재 오류가 해결되면 다음 오류 일 수 있습니다. –

답변

0

세션 [ "report"]가 null입니다. 사용자 정의 컨트롤에서 renderBytes를 설정하지 않습니다.

또한 세션에 저장하는 것은 정말 좋은 생각입니다. 제대로 수행되지 않는 Session [] 값을 설정할 때마다 이진 데이터를 직렬화/인코딩 한 다음 deserialize/unencoding해야합니다. 사용자 정의 컨트롤에 보고서 개체를 받아서 출력 스트림에 기록하거나 페이지 자체에서 수행하도록 속성을 만듭니다. 어쨌든, 이것을 regulat 클래스 대신 사용자 정의 컨트롤에 넣는 것이 합리적인지 확신 할 수 없습니다.

+0

안녕 데이빗, 고마워,하지만 그건 내 첫 번째 아이디어와 쓴,하지만 실행하는 동안 나는 App_Code에서 찾을 수없는 뭔가를 가지고 있고 아래의 codeSubdirectories를 mentioined 또는 무엇이든 .... 그것은 DOtnetnuke이기 때문에. 그래서 별도의 페이지를 만들어야했습니다. codeSubDirectories> <추가 할 수 directoryname = "IFrame을"/> <이 DirectoryName = "설문 조사"/> <추가 할 수 directoryname = "XML"를 추가 /> <추가 할 수 directoryname = "effority.Ealo.HTML"/> ethem

1

프로덕션 환경에서 웹 팜을 실행하고 있습니까? 그렇다면 세션 상태를 어떻게 저장하고 있습니까? 기본값은 InProc입니다. 즉, 세션이 팜의 한 서버에만 존재하고 후속 요청이 다른 서버로 이동하는 경우 문제가 설명됩니다. 이 시나리오를 수정하면 세션 상태 서버 나 SQL Server 세션 상태와 같은 서버간에 공유 할 수있는 일종의 세션 상태를 설정해야합니다. http://msdn.microsoft.com/en-us/library/ms178586.aspx

+0

웹 팜에 없습니다. btw : Print.RenderReport (listEnt, Language)는 정적 클래스 함수이고 "renderedBytes"를 반환하고 세션 변수에 넣습니다. 세션 [ "report"]에는 byteArray가 포함되어야합니다. 그런 다음 ASPX 페이지를 열고 Session [ "report"]을 검색하고 내가 게시 한 Page_load에서 코드를 실행하려고합니다. Dotnetnuke에서이 작업을하는 동안 나에게 걸렸습니다. dotnetnuke는 Usercontrols를 사용합니다. 그래서 updatepanel과 충돌합니다 ... 그러나 이것처럼 Localhost에서 작동하고 있습니다 ... PDF가 내 곁에 있습니다. 하지만 생산에 들어 가지 않은 이유는 무엇입니까? – ethem

+0

원격 디버깅을 할 수 있습니까? 그렇다면 답을 훨씬 빨리 얻을 수 있습니다. 나는 전에 dotnetnuke를 사용 해 본 적이 없습니다. 세션을 가로 채서 문제를 일으킬 수 있습니까? –

+0

안녕하세요 Brian, 좋은 지적입니다 ... 원격 디버깅을 수행하는 방법을 알고 싶습니다. 나는 서버에 remotedebugger를 설치했지만, 더 이상 어떻게 해야할지 모른다. – ethem

관련 문제