- PR -

ASP.NETからCOMコンポーネントを使用するには

1
投稿者投稿内容
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2006-05-26 22:47
OS:WinXPPro
VS:2003

いつも参考にさせていただいております。
表題の通り、ASP.NETからCOMコンポーネントの使用ではまっております。
現象は一言、CreateObjectでエラーになります。
そもそもCOMについて全く知識がないのですが、このCOMはASP(ActiveServerPage)にて
すでに使用されているものです。
これをASP.NETにて呼び出そうと色々調べまして、以下の手順を踏みました。

1. COMタイプライブラリからメタデータDLLを作成する。
  tlbimp 提供されたCOM.dll /out:MyASPCOM.dll

2. VSの参照設定から参照の追加をする
この時、COMタグの中には出てこないので参照ボタンから直接
 「MyASPCOM.dll」を選択しています。←COMタグにでないのがすでにおかしい??

3. USINGして使用 (コンパイルは通ります)

  using MyASPCOM

MyASPCOM.TEST test = (MyASPCOM.TEST)Server.CreateObject"MyASPCOM.TEST");
// ↑ ここで起動時にエラーになります。
//ちなみに ↓ この書き方でもコンパイルは通りますが起動時エラーです
  //MyASPCOM.TEST test = new MyASPCOM.TESTClass();


COMに原因があるのか、COMを使用するにあたっての作業が足りないのかがわからず
困っております。
どなたかアドバイスいただければ大変ありがたいです。
何卒、宜しくお願いいたします。




かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-05-27 13:36
VisualStudioを使用しているのなら
自分で相互運用用のタイプライブラリを作成しなくても
COMを参照設定すればIDEがかってにやってくれますよ。

引用:

MyASPCOM.TEST test = (MyASPCOM.TEST)Server.CreateObject"MyASPCOM.TEST");
// ↑ ここで起動時にエラーになります。
//ちなみに ↓ この書き方でもコンパイルは通りますが起動時エラーです
  //MyASPCOM.TEST test = new MyASPCOM.TESTClass();


エラー(例外?)の内容を詳しく教えてください
(メッセージ、スタックとレース)
#CreateObjectに括弧"("が無いですね
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-05-27 21:10
dcomcnfg で、ASPNET ユーザに起動の許可を設定してやる必要がある、とか?
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2006-05-29 02:40
かるあさん、Jittaさん、ありがとうございます!

その後、提供されたDLLの依存関係をツールで調べたところ、
参照しているDLLが足りないことがわかりました。
なんだか最初の最初でつまづいていたようです。
月曜日にそのDLLを提供元に問合せることにしました。

お騒がせしましたが、まずここから再度チャレンジしてみます。
それでもうまくいかなかった場合、かるあさん、Jittaさんのアドバイスを
参考にさせていただきます。ありがとうございました。
(うまくいくといいなぁ・・・)

みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2006-05-29 21:42
結局、足りないDLLの中に更に足りないDLLがあったりで
すったもんだしましたが、無事レジストリへの登録もでき、
Newすることができました。
これは一重に引継ぎがうまくいってないって事なんですね。反省。

ところで・・・
このCOMのあるメソッドのパラメタに「Cookies情報」があるんです。
すでにASPで使用されているCOMなので、そのサンプルコードを見ますと、
myMethode.test(Request.Cookies);
となっております。

ほほぅと思い、ASP.NETにて同じようにコードを打とうとすると、
インテリセンスに出るパラメタの型は、Request.Cookiesの部分がstringに
なってるんですねぇ・・・。
これはVisualStudioのIDEにより、このような型変換?になってしまったんですかねぇ?
ともかく、どうにもRequest.Cookiesは渡せないわけです。

提供元に再度問合せてみますが、
何かお気づきの点ございますでしょうか?
(とにかくCOMの知識が足りないもので・・・。)
1

スキルアップ/キャリアアップ(JOB@IT)