サードパーティのDLLをラップするアセンブリは、Windowsテストハーネスアプリで正常に機能します。また、デバッグモード(VS 2008 Visual Studio Development Server)で生成された場合、Webサービスでも正常に機能します。ただし、ローカルIIS 7 Webサーバーで実行すると、アプリは常にクラッシュします。ローカルIISサーバーで実行している場合のイベントログからのクラッシュの詳細は次のとおりです。
障害のあるアプリケーションw3wp.exe、バージョン7.0.6001.18000、タイムスタンプ0x47919413、障害のあるモジュールntdll.dll、バージョン6.0.6001.18000、タイムスタンプ0x4791a783、例外コード0xc0000374、障害オフセット0x000aada3、プロセスID 0x990、アプリケーション開始時刻0x01c9b4133281d5d0。
ディスカッション:サードパーティの.NET dll(FirstDataのLinkPointTransaction.dll)のラッパーを作成し、そのラッパーを参照する他のアセンブリをいくつか作成しました。コードの実行中、サードパーティへの呼び出しLinkPointTransaction.LinkPointTxn.Send()
はインターネット経由でFirstDataにトランザクションを正常に送信しますが、アプリケーションはその呼び出し中に次の行に到達する前にw3wp.exeをクラッシュさせます。私が見ることができる管理された例外をスローしません。クラッシュするだけです。IIS7を除いて、私のマシンのどこでも正常に動作します。
64ビットのVistaHomePremium(IIS7)を実行していますが、IISで32ビットアプリを有効にし、このWebサービス専用に別のAppPoolを作成し、すべてのアセンブリをx86に強制しました。ネットワークサービスとしてではなく、管理者権限を持つユーザーアカウントでアプリプールを実行しようとしました。UACがオフになっています。統合モードとクラシックモードを試しました。LinkPointTransaction.dllがFirstDataとの通信に使用するローカルファイアウォールのTCP/IPポートを明示的に開きました。ファイアウォールを(ルーターの後ろで)遮断したことさえあります。
私がリストしたこれらの回避策のいずれかを使用すると、常にWindowsアプリとVS開発サーバー内のWebサービスで機能しますが、ローカルIISサーバーでは機能しません。
IISWebサイトのAppPoolはクラシックモードです。(ギドンへの返答)