C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 23 を表示中)
■10196 / )  Re[2]: ジャーナルキューの参照
□投稿者/ カンタービレ (42回)-(2007/11/13(Tue) 13:41:55)
2007/11/13(Tue) 13:48:55 編集(投稿者)

No10188 (れい さん) に返信
>
> 今環境がなくて試せないので、
> アドバイス程度です。
>
>>渡しているパスは "マシン名\private$\キュー名\journal$" デス。
>
> ずっと忘れてましたが、
> MessageQueueのコンストラクタでpathを渡すとそのpathは検証されないようで、
> 変なパスが指定できちゃいます。たぶんバグなんですが。
> オブジェクトを作ってからプロパティでpathを設定したほうがいいです。
> #後でフィードバックにあげときます。
>
> アドバイスですが。
>
> MessageQueueのFormatNameプロパティは正常になってますか?
> FormatNameが実際に使われるので、これが変だとだめです。
> なんか昔はprivate$とかjournal$が小文字だと変になったような気がしますが、よく覚えてません。
>
> コンストラクタで"FormatName: XXX"形式で指定してもだめですか?
>
> それと、エラーの詳細をください。
> StackTraceとか。
>
> どっちにしろ、バグくさいなぁ

アドバイスありがとうございマス。
現状の1.0からのアップグレードソースを変更せずに検証してみました。

[1回目]
コンストラクタへの指定   :FormatName:DIRECT=OS:サーバ名\private$\キュー名\journal$

MQインスタンスのFormatName :DIRECT=OS:サーバ名\private$\キュー名\journal$
MQインスタンスのPath    :FormatName:DIRECT=OS:サーバ名\private$\キュー名\journal$
MQインスタンスのQueueName :形式が無効です。
MQインスタンスのMachineName:形式が無効です。

形式名は無効です。
場所 System.Messaging.MessageQueue.MQCacheableInfo.get_ReadHandle()
場所 System.Messaging.MessageEnumerator.get_Handle()
場所 System.Messaging.MessageEnumerator.MoveNext(TimeSpan timeout)
場所 System.Messaging.MessageEnumerator.MoveNext()

[2回目]
コンストラクタへの指定   :サーバ名\private$\キュー名\journal$

MQインスタンスのFormatName :無効なキューのパス名です。
MQインスタンスのPath    :サーバ名\private$\キュー名\journal$
MQインスタンスのQueueName :private$\キュー名\journal$
MQインスタンスのMachineName:サーバ名

無効なキューのパス名です。
場所 System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath(String queuePath, Boolean throwException)
場所 System.Messaging.MessageQueue.get_FormatName()
場所 System.Messaging.MessageQueue.GetMessageEnumerator()

旧バージョンでは2回目がうまく動くような感じなのデスが、2005ではエラーとなっているようデス。
ご指摘のあったキュー名やパスをインスタンス生成後に動的に設定してみましたが
空のインスタンスを生成後にPathを指定した時点で例外・・もしくは
MachineName、QueueNameを指定し、Pathプロパティがセットされたのを確認してみてもダメデス。。
FormatNameプロパティはReadOnlyなので直接指定も出来ず・・・書き方が悪いのでしょうか。。

[追記]
ちなみに、同じフォーマットでローカルホストを指定した場合は例外発生しません。
ローカルコンピュータのネットワーク名で、localhostではありません。
前は例外発生しなかったのにぃぃぃ・・ぎゃぼん・・・
返信 編集キー/


管理者用

- Child Tree -