6

1つの.Netアセンブリを作成し、COMオブジェクトとしてアクセスできるようにしました。ASPページでこのオブジェクトのメソッドを公開しようとすると、エラー「80131509」が発生します。オブジェクトをインスタンス化するときにエラーは発生しません。つまり、Server.CreateObjectが通過しています。

これは開発環境では正常に機能していますが、UAT環境ではこのエラーが発生しています。開発とUATは、UATの方が安全であることを除けば、ほとんど同じです。私はすべての可能な方法を試しましたが、運がありません。私は過去4日間この問題に取り組んでおり、助けていただければ幸いです。

そのdllを公開する際にIIS7でいくつかのアクセス許可の問題があるのではないかと疑っています。しかし、それが何であるかわからないのですか?私たちはIUSRにも完全な権利を与えました。

コード:

set obj = Server.CreateObject("DataAccess")
dim rs
set rs=obj.GetLocations("All") <--- **Here i am getting an error.**
4

1 に答える 1

2

私の職場にはいくつかの com dll があり、その dll を regasm に登録すると dll が機能しないという問題に遭遇することがよくあります。他のライブ環境では機能しますが、何らかの理由でこの 1 つのインスタンスでは機能しません。Com dll は気まぐれです。場合によっては、登録、登録解除、再登録、および再起動します。不思議なことに働き始めることもあれば、そうでないこともあります。

うまくいかないことがいくつかあります。

dll が存在するフォルダーと dll 自体に正しいアクセス許可が設定されていることを確認してください。また、依存する dll が存在し、適切な権限があることも確認してください。dll がアクセスする必要があるすべてのものが正しい権限を持っていることも確認してください。

それが失敗した場合は、regedit を開きます。com オブジェクトに関連付けられた GUID を検索します。レジストリのパスがすべて混同されていることに気付く場合があります。com オブジェクトへの参照を削除し、再起動して再登録します。

また、コンストラクターで例外がスローされて問題が発生することも確認しました。com オブジェクトが起動すると、爆発します。オブジェクトの 1 つに、例外が発生したときに電子メールを送信するメソッドを追加しました。

あるケースでは、実行中の Windows のバージョンと互換性がなくなった古い com オブジェクトがありました。サーバーをアップグレードした場合、それが問題になる可能性があります。私たちの場合、壊れた古いコンポーネントを置き換える独自のコンポーネントを作成しました。

また、com オブジェクトが厳密に型指定されている場合は、「regasm /tlb /codebase fickle_com_object.dll」を使用していることを確認してください。

要するに、com オブジェクトが機能しない原因がいくつかあります。

  1. レジストリ内の複数のパス
  2. フォルダのセキュリティ権限が正しくありません
  3. 作成時にクラッシュする

おそらく、これらのいずれかが問題を解決します。私はそれが時々どれほど難しいかを知っています。幸運を!

于 2012-09-07T01:36:45.863 に答える