2010-12-06 2 views
0

私はlocalReportを使用してPDF(SQL REPORTVIEWER)を印刷しています。それはlocalhost上で正常に動作します。アプリケーションをProduction(64ビットWindows 2008)に移動すると、エラーが表示されます。私はセッションを取得しようProgram1.aspxのページロードでResponse.BinaryWriteは製造時にエラーを返します

...私は、ユーザーコントロールでのセッションでrenderedbytesを入れ

(下記参照)と私はwindow.open(「Program1.aspx」)を行います変数とプロセス.... 私はこのステートメントは、 "Response.BinaryWrite(...)など"エラーが発生すると思います。

それは私のローカルPC(Vistaの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(); 

    } 

サーバーエラーが発生しました。 オブジェクト参照がオブジェクトのインスタンスに設定されていません。 説明:現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

ソースエラー:

未処理の例外は、現在のWeb要求の実行中に生成されました。以下の例外スタックトレースを使用して、例外の起点および場所に関する情報を識別できます。

スタックトレース:

【と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、 System.Web.UI.Control.OnLoad(EventArgs e)+99 System.Web.UI.Control.LoadRecursive()+50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsync

+2

あなたは セッション[ "レポート"] = renderedBytes を設定することではないでしょうか? それ以外の場合は、その変数を設定していて、使用していないのはなぜですか? – willvv

+0

良い点はwillvvですが、たとえその関数がbyte []以外のものを返していても、ユーザーがNullReferenceExceptionを取得しているので、直ちに問題になることはありません。バイト[]でないものをキャストしようとすると、InvalidCastExceptionが発生します。現在のエラーがクリアされると、次のエラーが発生している可能性があります。 –

答えて

0

セッション["report"]がnullです。あなたはそれをユーザーコントロールのrenderBytesに設定していません。

また、これをセッションに保存することは本当に悪い考えです。あなたのバイナリデータはシリアル化/エンコードされてから、Session []値を設定するたびに非直列化/非デコード化されなければなりません。レポートオブジェクトを受け入れてそこに出力ストリームに書き込むために、またはコントロール自体をページ内で行うために、ユーザーコントロールにプロパティを作成します。とにかく、これをregulatクラスの代わりにユーザコントロールに入れるのは意味があるとは思えません。

+0

こんにちはデビッド、ありがとう、それは私の最初のアイデアだったと書いたが、実行中に私はApp_Codeで見つけることができないし、以下のcodeSubdirectoriesまたは何かをmentioined ....それはDOtnetnukeだから。だから私はそれのための別のページを作成する必要がありました。 codeSubDirectories> <追加directoryNameで= "IFrameの" /> <追加directoryNameで= "XML" を追加/> <追加directoryNameで= "effority.Ealo.HTML" /> ethem

1

実稼働環境でウェブファームを運用していますか?もしそうなら、どのようにセッション状態を保存していますか?デフォルトはInProcです。つまり、セッションはファーム内の1つのサーバーにのみ存在し、フォローアップ要求が別のサーバーに送信されると、その問題が説明されます。このシナリオを修正すると、サーバー間で共有できるセッション状態(セッション状態サーバーやSQL Serverセッション状態など)を設定する必要があります。ここで

は、さまざまなセッション状態プロバイダーにいくつかの情報です: http://msdn.microsoft.com/en-us/library/ms178586.aspx

+0

ウェブファームにはありません。 btw:Print.RenderReport(listEnt、Language)は静的なクラスfucntionにあり、 "renderedBytes"を返してセッション変数に格納します。 セッション["report"]にはbyteArrayが含まれている必要があります。次に、ASPXページを開き、セッション["report"]を取得し、私が掲示したようにPage_loadでコードを実行しようとします。 Dotnetnukeでこれを動作させるには時間がかかりました。 dotnetnukeはUsercontrolsを使用しています。だからそれは更新パネルと衝突する...しかし、このように私はLocalhostで働いている... PDFは私の側でプロンプトです。 しかし、なぜ生産していないのですか?それ以外の原因は何ですか? – ethem

+0

リモートデバッグはできますか?もしそうなら、それははるかに速く答えにあなたを得るかもしれません。私は前にdotnetnukeを使ったことがありませんでした。問題を引き起こしている何らかの方法でセッションをハイジャックすることができますか? –

+0

こんにちはブライアン、それは良い点です..私はリモートデバッグを行う方法を知って欲しいですか?私はremotedebuggerをサーバーにインストールしましたが、さらに行う方法はわかりません。 – ethem

関連する問題