9

Windows 2008 64 ビット R2 ボックスで従来の ASP ページを実行しようとしています。

最初の問題は、dll の登録にありました。それは修正されました。 Windows Server 2008 R2 に DLL ファイルを登録する

ページにアクセスしようとすると、このエラーが発生します

Active Server Pages エラー 'ASP 0241'

CreateObject 例外

インデックス.asp

'(null)' の CreateObject により、例外 C0000005 が発生しました。

サーバー オブジェクト エラー 'ASP 0177 : c0000005'

コードを から に変更するServer.CreateObjectCreateObject、このエラーが発生します

Active Server Pages エラー 'ASP 0115' 予期しないエラー index.asp

外部オブジェクトでトラップ可能なエラー (C0000005) が発生しました。スクリプトの実行を続行できません。

アクセス権や管理者権限など、可能な限りすべてを確認しました。アプリケーションプールは、マネージコードなし+クラシックモードに設定されています。

これを修正するためのアイデアはありますか?

4

12 に答える 12

2

ASPでこれを修正するつもりはありません。C0000005は、アクセス違反の例外です。これは、コードが割り当てられていないメモリを読み取ろうとしたときに発生します。

dllは、ロード時またはオブジェクトの構築中に何か悪いことをしています。

単純な.vbsファイルを使用してdllをテストしましたか?

于 2011-01-11T21:02:03.703 に答える
2

まったく同じエラーが発生しました。

私の場合、C0000005 エラーは依存関係の欠落が原因でした。

ProcessMonitor は、それを見つけるのに役立ちます。(プロセスでフィルタリングし、「名前が見つかりません」にチェックを入れます) dll に名前が見つかりません

必要なファイルを適切な場所にコピーすると、問題が解決しました。(私の場合、VB6FR.dll は、フランス語の vb6 に必要な依存関係でした。)

于 2013-09-17T15:22:06.663 に答える
2

私もこれを追跡するのに数時間を費やしました。

私の場合、DB 呼び出し間でレコードセット オブジェクトを閉じずに数回再利用したことが原因でした。コードは、いくつかの同様のインスタンスで明らかな問題なく動作していましたが、そのうちの 1 つがプロセスの許容を停止しました。

ページの最後でレコードセットを閉じようとしたときにエラーが発生したため、トラブルシューティングがより困難になりました。

コードをクリーンアップして、呼び出し間でレコードセットが閉じられていることを確認したところ、問題が解決しました。

于 2014-08-09T12:13:04.657 に答える
1

I had the same problem happen sometime after KB4093114 was installed on a server. (I'm not 100% sure that the KB caused the problem but I suspect so because the scripting engine was updated.)

The problem was caused by a recordset that output a varchar(max) field to the markup. Even though the error does not provide a line number, I was able to pinpoint it to the outputting of the varchar(max) field through trial and error.

<%
...
rs.Open "SELECT LongDescription FROM Table1"
while (not rs.EOF)
   %> <p><%= rs("LongDescription") %></p> <%    ' ERROR HAPPENS BECAUSE OF THIS LINE
   rs.MoveNext
wend
%>

Removing that line fixes the problem. Also, casting the field to a non-max varchar also fixes it:

 rs.Open "SELECT LongDescription = Cast(LongDescription as varchar(4000)) FROM Table1"

To make matters worse, I found that once the error happens, even if you fix it you need to recycle the app pool to make the error go away.

于 2018-04-23T20:06:48.933 に答える
0

私の経験では、AVG Free を使用していて、更新後にこの種のエラーが発生しました。

于 2016-03-13T17:40:14.707 に答える
0

自分の com コントロールを使用しようとしているときに、この同じエラーが発生しました。私の場合、デバッグ モードでコンパイルされている dll が原因であることが判明しました。

これには 2 つの方法があります。

  1. IIS をデバッグ モードで実行します。32 ビットの場合、次の行を使用します: C:\Windows\SysWOW64\inetsrv>w3wp.exe -debug

    IIS サービスを停止する必要があり、64 ビットの場合は System32 のものを使用することに注意してください。

  2. リリースバージョンをコンパイルします:)

于 2016-04-06T09:52:36.677 に答える
-2

「Classic ASP (ASP 3.0) does not work on 64bit with 32bit COM objects」というタイトルのこのブログ エントリを確認することをお勧めしますhttp://blogs.msdn.com/b/robgruen/archive/2005/05/26 /422328.aspx

少し古くなっていますし、著者は ASP ハンドラーを ISAPI フィルター (フィルターではなく拡張機能です) と誤って呼んでいますが、それ以外の情報は適切なようです。

asp ハンドラーが 64 ビットとしてのみコンパイルされている場合、何をしても 32 ビットの COM オブジェクトをロードすることはできません。

著者は、COM+ ソリューションについて言及しています。32 ビット アウト プロセス COM+ パッケージはこの 32 ビット COM オブジェクトをロードでき、ASP ページはこの COM+ パッケージに対してクロス プロセス呼び出しを行うことができると思います。

がんばれ、マーク

于 2011-01-11T21:21:28.393 に答える