0

オンライン ショッピング用の小さな ASP.NET Web サイトを開発しています。Visual Studio でテストするとすべて正常に動作しますが、IIS に展開するとうまくいきません。

この問題は、参照している DLL ファイルにあるようです。この DLL ファイルには、初期化してすべての製品情報を持つ別のサーバーにクエリ要求を送信するために必要なクラスが含まれています。この DLL は、元々は IKVM を使用して DLL に変換した Jar ファイルでした。

アプリを IIS にデプロイすると、その DLL で定義されたオブジェクトをインスタンス化しようとするページは、null 参照で失敗します。次に例を示します。

Fulfiller fulfiller = new Fulfiller();
string result = fulfiller.initialize("host", port, "user", "pass");

このエラーを返します:

System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。でFulfiller.toLog(String )Fulfiller.initialize(String str1, Int32 i, String str2, String str3)Orders.createDataSource()

繰り返しますが、これは VS 開発サーバーでは完全に機能しますが、IIS では機能しません。その理由はわかりません。IIS で実行しているときに DLL が正しく読み込まれないのは、何らかのコーディング上の問題ですか? または、IIS の問題で、DLL の実行やリクエストの送信をブロックしている可能性があります。この問題を解決するために非常に必死です。

ありがとう

4

4 に答える 4

3

通常、開発サーバーで機能するものが IIS で機能しない場合、問題は承認です (VS サーバーはユーザーの資格情報で実行されますが、IIS は「ネットワーク サービス」または別のシステム ユーザーとして実行されます)。

たとえば、あなたのコードはfiller.toLog()で壊れています。

toLog() 関数がログ ファイルを開こうとしていて、IIS によって偽装されたユーザーが読み取りまたは書き込みを許可されていない可能性がありますか?

于 2008-11-07T15:11:51.007 に答える
0

filler.Initialize() は何をしていますか? そのコードを投稿できますか?

エラーなしでコンストラクターを渡すことができず、null-ref を持つことができないため、明らかにフルフィルラー参照があります。

于 2008-11-07T15:04:19.757 に答える
0

IKVM を使用したことはありませんが、IKVM ランタイムをサーバーにインストールする必要があることは確かです。サーバーで IKVM を確認しましたか?

お役に立てれば。

于 2008-11-07T16:45:40.770 に答える
0

私はロリスの答えに二番目です。

開発サーバーにはあなたの権限があります。Windows Server、または Active Directory を実行している任意のマシンに展開していると仮定すると、ログ ファイルが保存されているディレクトリを右クリックして、プロパティを選択できるはずです。ダイアログ ボックスには、[セキュリティ] というラベルの付いたタブがあります。Network Service ユーザー (または IUSR_machinename) が表示されない場合は、リストに追加する必要があります。ユーザーを選択し、読み取りおよび書き込み権限を割り当てます。

アプリケーション ディレクトリ全体に対する完全なアクセス許可を IIS ユーザーに付与しないでください。これは重大なセキュリティ上の脆弱性であるため、デフォルトの展開では現在必要なアクセス許可が付与されません。

于 2008-11-07T15:23:08.737 に答える