7

.dotx テンプレートを使用し、aspx ページでデータをマージするプログラムを作成しています。このプログラムはローカルの Dev ワークステーションでは完璧に動作しますが、テスト IIS サーバーに展開すると、以下の 2 行目で失敗し、オブジェクト参照エラーが発生します。

以前、Word Com オブジェクトが IIS サーバー上になかったため、問題に遭遇したため、Word をサーバーにロードし、DCom でアクセス許可を設定して、その問題を解決しました。しかし、今では wRange = ..... で始まる行でこのエラーが発生します。

前述したように、プログラムはデバッグ モードでローカルに完全に動作します。

何か案は?

Microsoft.Office.Interop.Word.DocumentClass

System.NullReferenceException: Object reference not set to an instance of an object

コード行:

Document BaseDocument = oWord.Documents.Open(ref oTemplate, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

wRange = BaseDocument.Bookmarks.get_Item(ref endOfDoc).Range;
4

4 に答える 4

0

Office をターゲット マシンにインストールした後、Word などのアプリのいずれかを直接開いていることを確認してください。このプロセスを実行するまで API は機能しません。また、生成されたエラーから、実際に何が問題なのかが明確になりません。

したがって、NullReferenceException は Word がドキュメントを開くことができないために発生する可能性があり、Word.Documents.Open() は null を返します。正直に言うと、これが問題の原因であると 100% 確信しているわけではありません。前述したように、エラーが問題の原因を明確に示しているわけではありません。(私は少し前にこのシナリオに遭遇しました。API が例外をスローしていたことは知っていますが、それがあなたが見ているものと同じかどうかは思い出せません。)

于 2011-05-15T01:11:48.810 に答える
0

Word が実際にサーバーにインストールされている場合は、IIS を実行しているユーザー アカウントが実際に Microsoft.Office.Interop Assembly に対するアクセス許可を持っているかどうかを確認します。

于 2011-02-25T17:14:14.677 に答える