2 つのモジュールを含む ASP.Net アプリケーションがあります。
- サーバー モジュールは、Windows サービスとして実行されます。
- IIS にインストールされた Web モジュール。
上記は、過去数年間完全に機能します(機能しています)。アプリケーションを新しい Windows 2008 サーバーに移動する必要があるときに問題が発生しました。
私がやったことは次のとおりです。
- サーバーモジュールでターゲットをAnyCPUからx86に変更し、BPマシンでテストしたところ、すべてが機能しました。
- サーバーと Web モジュールを Win 2008 サーバーに移動しました。
- サービスをインストールして実行しましたが、これまでのところ問題ありません。
- Web サイトから、null ポインター例外で失敗したクエリを実行しました。次のようなものです。
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg、IMessage retMsg) で
これが私の頭が回転し始めたところです。サービスと対話する私のコードは次のようになります。
<application name="SHR">
<client url="tcp://localhost:8039">
<wellknown type="Package.dal.MyDAO, MyPackage" url="tcp://localhost:8039/SHR/MyDAO.rem"/>
</client>
<channels>
<channel ref="tcp client">
<clientProviders>
<formatter ref="binary" includeVersions="false"/>
<provider type="server, server"/>
</clientProviders>
</channel>
</channels>
</application>
SQL プロファイラーを実行したところ、呼び出しようとしているクラス メソッドが完全に実行されていることがわかりますが、何らかの理由で何も返されません。クラス自体は正しくインスタンス化され、挿入/削除してすべてが機能するクエリを実行しましたが、データセットを返す必要がある場合は、null ではないことを知っていても null を返します)。
この問題は、CPU を x86 に変更したときに Win 2008 でのみ発生します。AnyCPU を x86 に変更せずにサービスを実行しようとすると、別のエラー セットが発生します。