2017-01-19 1 views
1

モジュールA(.netアセンブリ)を使用するアプリケーションがあり、モジュールAはモジュールB(.netアセンブリ)を使用し、モジュールBはモジュールC(C++)を使用します。C#:.Net:コンソールアプリケーションで動作するコード。 WCFサービスで実行しているときに同じコードが失敗しています

サーバーの多くのアプリケーションでこれを使用するため、管理対象モジュールをレジストリに登録し、GACにインストールしました。

は、今私はコードの下で(すべての仕事をしていません)、モジュールAにアクセスしています:

タイプmoduleAType = Type.GetTypeFromProgID( "ModuleA.Class1"); オブジェクトclass1Object = Activator.CreateInstance(moduleAType);

上記の2行のコードは、コンソールアプリケーションとして実行するとうまく動作します。しかし、同じコードでWCFサービスとしてデプロイしてリクエストを行うと、エラーがスローされます:

"ModuleBまたはその依存関係の1つをロードできませんでした"。

上記のエラーをWCFサービスで解決するには、ModuleA、ModuleB、ModuleCのすべてをサービスインストールフォルダのビンにコピーしましたが、サービスをブラウズ中に上記のエラーが発生します。私はいくつかのシステムモジュールがWCFサービスとして実行されていないと思う。

私はProcMonを使用してAsp.Netがdllをどこから取得しているか確認しようとしましたが、それを把握することはできませんでした。すべての提案/ヘルプは非常に役に立ちます

注:コンソールアプリケーションとWCFサービスは、同じマシンの同じユーザーで実行されます。

+0

WCFサービスの 'target framework'と' target platform'を確認しましたか?あなたの望むモジュールと互換性があるはずです。あなたのコンソールアプリケーションとWCFサービスのターゲットフレームワークとプラットフォームは何ですか? – Amit

+0

はい、忘れてしまったことを忘れてしまいました。私もそれを確認しました。すべてがフレームワーク4.5にあります – Pramod

+0

そしてプラットフォームはどうですか? AnyCPU/x86/x64? – Amit

答えて

0

私は何とかこの作品を作ってくれました。それを共有して他の人に役立つことを願っています。

私はいくつかのロギングを行い、サービスの実行ディレクトリはc:\ windows \ system32 \ inetsrvであり、依存関係ウォーカーでは、ModuleBが依存しているdll(システム固有)のほとんどがc:\ windows \ system32。

私はinetsrv(c:\ windows \ system32 \ inetsrv)内のsystem32(c:\ windows \ system32)フォルダへのショートカットを作成してくれました。

関連する問題