2

ASP.NETMVC3プロジェクトで32ビットと64ビットのDLLを参照しました。

プロジェクトはコンパイルされますが、ランタイムエラーが発生します。

これは、Webプロジェクトを64ビットで実行しているためです。

ローカルIISで「32ビットを有効にする」にはどうすればよいですか(IIS 7.5 Proでそれを行うにはどうすればよいですか)。

.NET4.0を使用しています

私が得るエラーは次のとおりです。

CLSID {A6775dfd2-1dfF-421C-A187-4D55F4DDFBFF}を持つコンポーネントのCOMクラスファクトリの取得は、次のエラーのために失敗しました:80040154クラスが登録されていません(HRESULTからの例外:0x80040154(REGDB_E_CLASSNOTREG))。

4

3 に答える 3

4

64ビットコンポーネントが必要ない場合(そこで何が実行されているかわからない場合、または32ビット以上で実行する方法を知りたいだけなのでこれを除外できるかどうか)

http://learn.iis.net/page.aspx/201/32-bit-mode-worker-processes/

サーバーレベルで設定するには、次のコマンドを使用します。%windir%\ system32 \ inetsrv \ appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true

または、特定のアプリプール(より推奨されるimho)を設定して、次のことを試すことができます。申し訳ありませんが、このページはアクティブではなくなったようで、現在はgoogleキャッシュのみが表示されています。

IISに32ビットのアプリプールワーカープロセスを作成させる

アプリケーションがWebアプリとして実行されている場合、つまりIISアプリプールワーカープロセスで実行されている場合は、そのワーカープロセス(w3wp.exe)を32ビットプロセスにする必要があります。これは、アプリプールの詳細設定で指定できます。

Webアプリのアプリプールを選択します。右側の[アプリケーションプールの編集]の下にある[詳細設定...]をクリックします。(一般)の下の32ビットアプリケーションを有効にするの値をTrueに変更します。

設定の「有効にする」という言葉は、「32ビットまたは64ビットのアプリケーションを許可する」のように「許可する」という意味ではないことに注意してください。これは実際には、「32ビットアプリケーションがサポートされるようにワーカープロセスを32ビットモードで実行するように強制する」のように「強制」を意味します。つまり、この設定の値がTrueの場合、アプリプールワーカープロセスは常に32ビットプロセスとして起動されます。Falseに設定すると、64ビットのアプリプールワーカープロセスが起動します。

アプリプールワーカープロセスが開始されると、タスクマネージャーの[プロセス]タブの[イメージ名]列にw3wp.exeとして表示されることに注意してください。[32ビットアプリケーションを有効にする]設定の値がTrueの場合、w3wp.exe*32として表示されます。

于 2012-05-23T01:26:14.297 に答える
2

IIS Express 7.5 (インストールすると Visual Studio 2010 で使用される) は 32 ビットのみです。

http://learn.iis.net/page.aspx/1265/iis-75-express-readme/

引用するには:

32 ビットと 64 ビットの両方のシステムがサポートされていますが、IIS 7.5 Express の 32 ビット ビルドのみが存在します。

したがって、あなたの問題が、すべての DLL が 32 ビットである場合に発生する可能性がある通常の 32 ビット / 64 ビット プール モードの問題に関連しているとは想像できません。

ただし、64 ビットの COM DLL をロードしようとすると失敗します。64 個のバイナリを 32 ビット プロセスにロードすることはできず、その逆も同様です。

もう 1 つの落とし穴は、デバッグする Web サーバーを選択するときにチェックボックスをオンにするのを忘れていることです。Use IIS Express

ここに画像の説明を入力

このチェックボックスをオンにしない場合、Windows に同梱されているバージョンの IIS7のDefaultWebSiteの子アプリケーションでサイトを実行します。

DefaultWebSiteDefaultAppPoolで実行され、64 ビット バージョンの Windows では 64 ビット プロセスとして実行されます。そのため、代わりにこれを使用して 32 ビット バイナリを使用する場合は、 DefaultAppPoolを 32 ビットとして実行するように変更する必要があります。

appcmd.exeIIS7 の MMC スナップインを使用するか、コマンド ラインからツールを実行して、これを行う必要があります。

于 2012-05-23T00:48:43.930 に答える