古典的なASPページから.NETアセンブリを消費します
-
28-09-2019 - |
質問
ASPページがいくつかあり、.NET DLLにアクセスするオブジェクト参照の問題がある古い.NET 2005 Webサイトがあります。メンテナンスタスクは私に伝えられ、元の開発者はどこにも見つかりませんでした:(私はすでに.NETで始めたので、このDLL地獄のような問題を実際に習得しません。
下の矢印には、「(0x80131500)オブジェクト参照がオブジェクトのインスタンスに設定されていない」を奨励しています。
Set objCommon = Server.CreateObject("Wrapper.CommonFunctions")
Dim machineBuilding
--->>> If objCommon.IsMachineAccount(strLogin, machineBuilding) Then
私はすでにこれらの手順に従いました:
- Regasm /TBL /CodeBase mycomdll.dll
- gacutil /i mycomdll.dll
- mycomdll.dllをSystem32ディレクトリにコピーします
- コンソールから、issresetを実行します
- dllがフレームワーク2.0で作成されている場合、System32ディレクトリに「dllhost.exe.config」ファイルを作成し、これを置きます。
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
<requiredRuntime version="v2.0.50727"/>
</startup>
</configuration>
6.- ISSETコマンドを使用してIISを再起動します
また、これらのものも次のとおりです。
- プロジェクトプロパティの下でa。下アプリケーションアセンブリ情報i。 「アセンブリをcomvisibleにする」を確認してください。 b。ビルドIの下。 「com Interopの登録」を確認してください
- 署名しないでください。
- IUSRにファイルに完全な権限があることを確認してください。
- IISSETを介してIISを再起動して、キャッシュを洗い流します。
まだアプリケーションの実行に成功していません。これ以上のアイデアは何をチェックしたり、したりしますか?ありがとう!
エミール
解決 3
問題は、アプリケーションがデータベースのホスト名を含むファイルを探していることでした。
他のヒント
HRESULT値は非常に関連性があります。 0x80131500の「施設コード」に注意してください。13は、エラーのソースが管理されていることを示します。あなたはすでに1500の友好的な翻訳を手に入れました。
言い換えれば、管理されたコードは例外を投げましたが、処理されませんでした。もちろん、それは珍しいことではありませんが、管理されたコードは非常に一般的に例外をスローします。特にnullReferenceException、あなたがトリガーしたもの。管理されていないプロセスでマネージドコードを実行しているため、これをデバッグすることはそれほど簡単ではありません。 IISの適切な手順が何であるかはよくわかりませんが、通常はツール + Attach to Processで行われます。これに取り組む最良の方法は、コードを分離し、いくつかの単位テストを書くことです。
それ以外に、Machine Building変数は、NREの良い候補者として私を攻撃します。初期化しませんでした。
ところで:登録とは何の関係もありません。これにより、非常に異なる種類のエラーが生成されます。
私はあなたに似た解決策を持っていましたが、それは長い間なくなっています。しかし、私はまだそれについていくつかの情報を持っています、そして、私は私のレギスの声明が異なることに気づきました。
regasm mycomdll.dll /tlb :mycomdll.tlb
TLBの代わりにTBLを参照します - 多分それが問題ですか?
また、パラメーター値を再確認し、Quick and Dirty .NETクライアントを介してそれらのパラメーター値を使用してメソッドを呼び出して、メソッドがエラーをスローするかどうかを確認する必要があると思います。
また、私の古典的なASPコードがあなたのものと一致したことを確認したいです...
set obj = server.CreateObject("mycomdll.myclass")
...
call obj.method(false)
...
myvar = obj.method2(param1, param2, param3)