C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

[VB6+IIS(ASP)+C#] DLLが見つからない?

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■103331 / inTopicNo.1)  [VB6+IIS(ASP)+C#] DLLが見つからない?
  
□投稿者/ ded (10回)-(2024/10/01(Tue) 14:23:29)

分類:[レガシ ASP] 

【環境】
OS:Win Svr 2022 Std
ASP:IIS10+Classic ASP(VBScript)
CGI:VB6
旧DLL:VC++5.0(コメントから、ソースなし)
新DLL:C# 12(VS2022Pro)
Framework:4.7.2

【経緯】
・Webサーバリプレースによる動作検証のタイミングで、CGIが呼んでいるDLLが動作しない(エラー)になるのを確認
・ソースを探すも見つからず、in/outから互換COMをC#で作成
・サーバ上でCGIを単体模擬実行すると、正常に動作
・IISから実行させると、実行ログは出力されるが、80070002エラーが発生している
・GetUserName APIはIUSRを返却している為、IISからDLL(COM)が見つからないと想定できるが原因が不明

【状態】
1.テストEXE(VB6)及び、CGI(VB6)の単体実行は正常に可能
2.IIS(ASP)経由でCGIを実行すると、「(80070002)Automation error The system cannot find the file specified.」が発生する
  ※その時の実行ユーザ(GetUserName API)は「IUSR」であることを確認
3.DLL(COM)は管理者でregasmを行い、一般ユーザでは動作しているのを確認
4.エラー発生時にCGI自体は動作しているのを確認(実行権限等ではない認識:DLL(COM)もIUSRに実行権限は確認)

【プロジェクトの設定(念のため)】
1.「アセンブリをCOM参照可能にする」にチェック
2.「COM相互運用機能の登録」にチェック
3.プラットフォームはx86
4.(IIS アプリケーションプール) 32ビットアプリケーションの有効化=True

【エラーログ】
ユーザID :IUSR
[-2147024894(80070002)]-2147024894
Automation error
The system cannot find the file specified.


よろしくお願いします。
引用返信 編集キー/
■103332 / inTopicNo.2)  Re[1]: [VB6+IIS(ASP)+C#] DLLが見つからない?
□投稿者/ 魔界の仮面弁士 (3800回)-(2024/10/01(Tue) 15:00:49)
No103331 (ded さん) に返信
> 2.IIS(ASP)経由でCGIを実行すると、「(80070002)Automation error The system cannot find the file specified.」が発生する
>   ※その時の実行ユーザ(GetUserName API)は「IUSR」であることを確認
0x80070002 は「指定されたファイルが見つかりません。」ですね。

デプロイ先のフォルダーが適切かどうかを確認するために、
PROCMAN で拒絶箇所を確認してみるのは如何でしょうか。
https://stackoverflow.com/questions/2500931/deploying-net-com-dll-getting-error-0x80070002
https://learn.microsoft.com/ja-jp/troubleshoot/developer/webapps/iis/www-authentication-authorization/understanding-identities

また、FREB(失敗した要求トレース)を有効にして、
どの段階でエラーとなっているか追跡してみるとか。
https://jpdsi.github.io/blog/web-apps/freb/
引用返信 編集キー/
■103333 / inTopicNo.3)  Re[2]: [VB6+IIS(ASP)+C#] DLLが見つからない?
□投稿者/ ded (12回)-(2024/10/01(Tue) 18:27:34)
No103332 (魔界の仮面弁士 さん) に返信
> デプロイ先のフォルダーが適切かどうかを確認するために、
> PROCMAN で拒絶箇所を確認してみるのは如何でしょうか。
> https://stackoverflow.com/questions/2500931/deploying-net-com-dll-getting-error-0x80070002
> https://learn.microsoft.com/ja-jp/troubleshoot/developer/webapps/iis/www-authentication-authorization/understanding-identities
>
> また、FREB(失敗した要求トレース)を有効にして、
> どの段階でエラーとなっているか追跡してみるとか。
> https://jpdsi.github.io/blog/web-apps/freb/


参考になりました。
プロセス モニターで確認すると、存在しないSID(HKUに無い)を頻りに読みに言っており、
成功するのはHKCUを読んでいるので「アセンブリ署名を行い、regasmでcodebaseを指定」しました。
※厳密な名前付きのアセンブリにすることを強くお勧めされているので...

無事"当該箇所は"スルーする事が出来ました。
ありがとうございました。


解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ