2011-01-10 38 views
6

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

最初は、DLLの登録で問題が発生しました。これは修正されました。 Register DLL file on Windows Server 2008 R2

私がページにアクセスしようとすると、今、私はこのエラーを取得する

アクティブサーバーページエラー 'ASP 0241'

CreateObjectの例外

index.asp

'(null)'のCreateObjectは例外C0000005を発生させました。

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

私は、このエラー

アクティブサーバーページエラー「ASPで終わる.. CreateObjectのためにServer.CreateObjectのからのコードを変更する場合0115 '予期しないエラー index.asp

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

アクセス権と管理者権限などを確認しました アプリケーションプールは[管理されていないコード+クラシックモード]に設定されています。

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

+1

あなたはどのようなオブジェクトを作成していますか? – bzlm

+0

作成しようとしているオブジェクトは何ですか? – Sparky

+0

これはカスタムオブジェクトです。 dbからいくつかのものを取得します。私は登録されたDLLを持っています。ソースコードなし。 –

答えて

2

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

オブジェクトのロード時や作成中にdllが何か悪いことをしています。

単純な.vbsファイルでDLLをテストしましたか?

+1

これをVBSから試してみる場合は、ASP ISAPI dllの「ビット数」と一致するvbscript.exeを使用してください。 – Mark

+0

これは本当に面白いです。私はオブジェクトを作成するだけで、オンラインのvbsファイルを作成しました。私自身のディレクトリから実行したとき、私はこのエラーを受け取りました。 "(null):0x800700C1" dllとvbsファイルをc:\ windows \ syswow64 \にコピーしてファイルを実行しました。 P1:スクリプトホストは、問題の署名 "eventvwrと から " 動作を停止しました拠点5.8.7600.16385 P3:4a5bc670 P4:StackHash_0a9e P5:0.0.0.0 P6:00000000 P7: P2 CSCRIPT.EXE 02ca0068 P8:c0000005 P9:00000008 P10: " –

+0

@壊れたリンク:syswow64フォルダの[c | w] script.exeを特に使用していない限り、あなたは実行されているはずです64ビットバージョンをインストールしても、あなたのDLLは32ビットになります。 C1エラー(これはERROR_BAD_EXE_FORMAT)はおそらくそれについて不平を言います。 32ビットバージョンのcscriptを実行すると、ASPで取得しているのと同じエラーが表示されます。これはあなたのdllが壊れていて、修正が必要であることを確認します。 – AnthonyWJones

-2

あなたは、「32ビットCOMオブジェクトと64ビット版では動作しませんクラシックASP(ASP 3.0)」と題したこのブログのエントリを、チェックアウトすることがありますが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 +パッケージへのクロスプロセスコールを行うことができると感じています。

幸運、 マーク

1

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

私のケースでは、C0000005エラーは依存性がないために発生しました。

ProcessMonitorで見つけてください。 (プロセスごとにフィルターをかけ、「名前が見つかりません」を確認してください) Name not found on dll

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

0

私は数時間かけてこれを追いかけました。

私のケースでは、DBコールの間にレコードセットオブジェクトを閉じずにレコードセットオブジェクトを何回か再利用したためです。このコードは、いくつかの同様のインスタンスで明らかな問題なしで動作していましたが、そのうちの1人はプロセスを許容しなくなりました。

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

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

0

私の経験では、AVG Freeを使用しており、アップデート後にこの種のエラーが発生します。

0

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

  1. 実行IIS:

    は、その周りの2つの方法があります。 32ビットの場合は、次の行を使用します。 C:¥Windows¥SysWOW64¥inetsrv> w3wp.exe -debug

    IISサービスを停止する必要があります.64ビットの場合は、System32のものを使用する必要があります。

  2. は、複数回のCSVファイルのデータをロードしている間、私は同じエラーを持っていたリリースバージョン:)

0

をコンパイルします。 ステップ1 - 最初に、csvデータを一時テーブルに転送する一時テーブルを作成し、データが移動されたら一時テーブルを削除してメインテーブルに移動します。これはプログラムで行う必要があります。

ステップ2 - mysqlに移動してデータベースを選択し、このクエリ(SHOW FULL PROCESSLIST;)を使用して、ブラケットなしで使用します。実行中のオブジェクトのステータスが表示されます。ステータスが「スリープ」のオブジェクトが見つかった場合は、2回目のファイルのアップロードを試みる前にクリアする必要があります。通常、デフォルトの待機時間は約28000秒です。要件ごとに減らす必要があります。待ち時間を短縮するコードは(SET GLOBAL wait_timeout = 5;)です。ブラケットなしで使用してください。これはmysqlを使用してください。グローバル待機時間を5秒に変更します(必要に応じて変更)。これにより、問題が解決されます。ではごきげんよう。