2017-06-12 4 views
-1

この問題を今すぐ解決しようとしていますが、まだ成功しています。コードをIISに移動したときにCoCreateInstance( "CLSID")がハングアップする

シナリオ: 1)私たちはasp.net MVCで開発されたWebアプリケーションを持っており、これはWinForms exeを呼び出してドキュメントを描画しています。

2)Winforms exeは、サードパーティのDLLを使用してドキュメントを描画し、印刷します。コードはVS 2015しかしから実行されたときに

3)すべてが正常に動作COMオブジェクトを使用して初期化されたときにコードをexeファイルが呼び出されるIIS、ではなく、ステージで公開されている場合

(ThirdPartyControl) ThirdPartyControl.CoCreateInstance( "{value}")コードはハングアップし、例外はスローされません。

+0

あなたの質問の部分は少し曖昧です。たとえば、「すべてがVS 2015からコードを実行するときに問題なく動作します」 - 問題のコードはWinforms exeまたはMVC Webアプリケーションですか?同様に、あなたのMVCアプリケーションがWinform exeをどのように "呼び出す"かは明確ではありません。私たちは "呼び出し"が意味するかもしれないものを推測することができますが、間違っていると推測できます。あなたはよく形成された質問をするときに役に立つ答えを得る機会を増やします。あなたは[ask]と[mcve]の助言が役に立ちます。 –

+0

申し訳ありませんが、混乱のためにお詫び申し上げます。上記のexeで壊れたコードとmvcアプリケーションはSystem.Diagnostics.Processクラス経由でEXEを呼び出します。 – user1002446

+0

これを理解していれば、Winform exeはVisual Studio内で実行されたときに正しく動作しますが、MVCアプリケーションで起動されたときには正しく動作しません。 Visual StudioからMVCアプリケーションを実行すると、デバッガが混在モードに設定されている可能性があります。これは、起動後にWinform exeにデバッガを接続できるようにする必要があります。それはあなたに何かを伝えるかもしれない。 –

答えて

0

私はこれをコメントとして追加したいと思いますが、残念ながら私の担当者は低すぎます。 IISプロセス/アプリケーションプールが実行されるユーザーIDを確認してください。ユーザーがアクセスしていないディレクトリにwinformアプリケーションをインストールした可能性があります。これを素早くテストするには、資格情報を使用してIISユーザーのIDを変更し、元のIISユーザーに権限を与えて元のIISユーザーに許可を与えます。

また、winformアプリケーションが32ビットの場合は32ビットの互換性が有効になっている

+0

IISアプリケーションプールでは、アイデンティティはすでにIISでmy credentials.Webアプリケーションを使用するように設定されていますが、EXEを呼び出すことはできますが、COMインスタンスを初期化しようとするとハングアップしますが、WebアプリケーションがVS 2015 – user1002446

+0

[サービスからの非対話的なWinformsの実行](https://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-32-and-64-bit-Archite) 私は必要がありますこれも早く考えました。ビジュアルスタジオからアプリケーションを起動すると、アプリケーションは対話ユーザーとして実行されます。 IISは、ユーザーの対話型コンポーネントにアクセスすべきではないサービスです。あなたはこれを回避することができます、上記の投稿を参照してください。 COMコンポーネントにUIウィンドウが必要な場合は、このために失敗する可能性があります。 –

+0

WinFormsで開発されたexeを呼び出すだけのサービスを呼び出すわけではないので、あなたが提案した投稿が私のケースで動作するかどうかはわかりません。 – user1002446

関連する問題