1

Crystal レポート バージョン 13.02 を異なる方法で使用する 2 つのビジュアル スタジオ 2010 プロジェクトがあります。

1 つは動作し、もう 1 つはobject reference not set to an instance of an objectエラーになります。

最初のアプリは、Web アプリケーションとしてゼロから開発したもので、いくつかの既存の Crystal レポートを使用し、Crystal レポート ビューアを使用して動作しています。asp.net 4.0 frameworkを使用した Web アプリケーション プロジェクトc#です。

もう 1 つのプロジェクトは、私が にアップグレードした古い VB Web サイト プロジェクトであり、13.02 にアップグレードするまで問題なく動作していました.net 2.04.0このプロジェクトはビューアーを使用せず、データをレポートに出力するだけです。Visual Studio の開発用ラップトップでは正常に実行および印刷されますが、ラップトップIIS 7.5とサーバーの両方に公開された場合はそうではありませんIIS 7.5

このエラーが発生し、可能なすべてのオプションを使い果たしました。私のマシンとサーバーの両方でWebアプリケーションプロジェクトが正常に動作するため、これをドライバーにすることはできません。答えが見つかる前に、プロジェクトを Web アプリケーション プロジェクトに変換せざるを得なくなるのではないかと疑っていますが、そのまま解決する答えを見つけたいと思います。

更新 さらにデバッグした後、問題は PrintToPrinter メソッドであることがわかりました。このメソッドも、開発モードでは正常に機能しますが、公開時には機能しません。

4

3 に答える 3

1

解決された問題 プリンターが存在するにもかかわらず、実際には見つかりませんでした。これは、IIS がユーザーと同じリソースへのアクセス権を持っていないためです (当然のことながらそうです)。アクセス権は、既定のユーザー キーの下のレジストリ エントリを介して付与するか、プリンターのセキュリティ オプションを IIS アカウントに設定する必要があります。 Web アプリケーションが使用しているアプリケーション プールで、IIS の下の [ID] オプションで設定します。

完全なプロセスは、このリンクのSAP サイト でも詳しく説明されており、結果は 2 倍になりました。

  1. このコード スニペットを使用して、使用可能なすべてのプリンターをループし (これを SAP からコピーして貼り付け、アプリに C# を使用し、追加するリスト ボックスを作成しました)、印刷プロセス中にそれらを Web ページに表示しました。

    Dim myPrinter As String 
    For Each myPrinter In System.Drawing.Printing.PrinterSettings.InstalledPrinters
    
             add  to list
    Next
    
  2. Web サーバーの下で、コンピューターの管理を使用して、Local Service IIS ID をPrint Operatorsグループに追加しました。

  3. IIS の下で、Web サイトが使用しているアプリケーション プールの「詳細設定」を使用して、Identity フィールドをLocalServiceに変更しました。

  4. コード スニペットを再度実行してプリンターが使用可能であることを確認したところ、プリンターが使用可能になり、レポートを印刷したところ、正常に実行されて印刷されました。

この答えを見つけるのにしばらく時間がかかりました。答えを導き出す支援がなければ、そこに到達することはできませんでした. これが他の誰かに役立つことを願っています。

于 2013-09-16T14:19:19.250 に答える
1

VB アプリケーションの web.config ファイルには、必要なすべての Crystal 参照が含まれていますか? 私はここ数日、それがかなり風変わりであることを学んでいます.

于 2013-09-06T16:50:11.153 に答える
0

CR を本番サーバーにダウンロードしてインストールする必要があります。*.msi

例: CRRuntime_64bit_13_0.msi

于 2013-09-05T22:11:04.393 に答える