3

いくつかのaspページがあり、.netdllへのアクセスにオブジェクト参照の問題がある古い.net2005Webサイトがあります。メンテナンスタスクは私に引き継がれ、元の開発者はどこにも見つかりません:(私はすでに.Netで始めたので、このdll地獄のような問題の処理を実際にマスターしていません。

下の矢印は、「(0x80131500)オブジェクト参照がオブジェクトのインスタンスに設定されていない」ことを奨励しているところです。

Set objCommon = Server.CreateObject("Wrapper.CommonFunctions")
  Dim machineBuilding
--->>>  If objCommon.IsMachineAccount(strLogin, machineBuilding) Then

私はすでにこれらの手順に従いました:

  1. regasm / tbl / codebase mycomdll.dll
  2. gacutil / i mycomdll.dll
  3. mycomdll.dllをSystem32ディレクトリにコピーします
  4. コンソールから、issresetを実行します
  5. 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.-issresetコマンドを使用してIISを再起動します

そしてまたこれらのもの:

  1. プロジェクトのプロパティの下a。\ application \assemblyinformationの下でi。「アセンブリをCom-Visibleにする」にチェックを入れます。b。ビルドiの下。「ComInteropに登録」をチェックします</li>
  2. 署名しないでください。
  3. IUSRがファイルに対する完全な許可を持っていることを確認してください。
  4. iisresetを介してIISを再起動し、キャッシュをフラッシュします。

それでも、アプリケーションの実行は成功しません。何をチェックまたは何をすべきかについてのアイデアは他にありますか?ありがとう!

エミール

4

3 に答える 3

2

HRESULT値は非常に関連性があります。0x80131500の「ファシリティコード」に注意してください。13は、エラーの原因がマネージコードであることを示しています。あなたはすでに1500の友好的な翻訳を手に入れました。

つまり、マネージコードは例外をスローし、処理されませんでした。もちろん、これは珍しいことではありません。マネージコードは非常に一般的に例外をスローします。特に、トリガーしたNullReferenceException。マネージコードをアンマネージプロセスで実行しているため、これをデバッグするのはそれほど簡単ではありません。IISの適切な手順はよくわかりません。通常は、[ツール]+[プロセスにアタッチ]を使用して実行されます。これに取り組む最良の方法は、コードを分離し、いくつかの単体テストを作成することです。

それ以外は、MachineBuilding変数はNREの良い候補として私を襲います。あなたはそれを初期化しませんでした。

ところで:それは登録とは何の関係もありません。これにより、非常に異なる種類のエラーが発生します。

于 2010-08-12T14:58:31.963 に答える
0

私はあなたと同じような解決策を持っていましたが、それはずっと昔のことです。しかし、私はまだそれについていくつかの情報を持っています、そして私は私のregasmステートメントが異なっていることに気づきました。

regasm mycomdll.dll /tlb :mycomdll.tlb

あなたはtlbではなくtblを参照しています-多分それが問題ですか?

また、パラメーター値を再確認してから、それらのパラメーター値を使用して、手っ取り早い.NETクライアントを介してメソッドを呼び出し、メソッドがエラーをスローするかどうかを確認する必要があると思います。

また、私のクラシックASPコードがあなたのコードと一致していることを確認したいと思います...

set obj = server.CreateObject("mycomdll.myclass")
...
call obj.method(false)
...
myvar = obj.method2(param1, param2, param3)
于 2010-08-12T12:42:58.843 に答える
0

問題は、アプリケーションがデータベースのホスト名を含むファイルを探していることでした。

于 2010-09-01T02:34:32.967 に答える