2017-09-27 5 views
0

Microsoft.BizTalk.ExplorerOMを使用してPowerShellスクリプトを作成し、BizTalk ReceiveのSB-Messaging SASキーを動的に更新しています場所と送信ポート。これは、私たちがサービスバスキュー用にSASキーをロールし、BizTalkを新しいキーでできるだけ苦労なく更新できるようにするためです。Microsoft.BizTalk.ExplorerOMを使用してSB-Messaging送信ポートプロパティを読み取ると、変更が行われます

受信場所で正しく動作しますが、送信ポートは私に別の問題を与えています。

はできるだけ早く私は、送信ポートのPrimaryTransportのプロパティを読み取るように、その後、「無効または不正な形式のXMLデータ例外」を投げる代わりに、作業からのSaveChangesを防止することを、いくつかの変更がカバーの下に行われているようです。

Send Port SaveChanges exception

これは、私がそのプロパティのいずれかを読んで、そして成功したのSaveChangesができReceiveLocation、と比較されます。

Receive Location successful SaveChanges

この例の両方で、変更は私が行われていないことに注意してください。私は単に読書をしてから、セーブするだけです。

誰でも問題を引き起こしている可能性のあることについて、また可能な解決策を試すことができますか?

答えて

0

Powershellを使用してServiceBus ReceiveLocations & SendPortsの値を置き換えるときに、この同じ問題が発生していました。

問題は、TransportTypeDataの有効なxmlシンボルがありません。これは、スクリプトがPS cmdでそれらを読み取ったときに変換されます。

有効なxmlシンボル(名前空間値のためのものなど)はすべてampに変換する必要があります。 How do I escape ampersands in XML so they are rendered as entities in HTML?

・ホープ、この意味をなさない、とされていない場合、それから行く私が知っていると私はそれを別のものをあげる:「:EDダブルアンペア」

は、ここで私が何を意味するかの例を示す一例の記事です。

+0

TransportTypeDataの値を交換するとき、私は私自身の経験に基づいて、結論にジャンプすることを今参照してください。 いいえ私はそれがエラーで終わる理由はわかりません。単に現在のプロパティを入力するだけです(実際には最初に考えたとおりに置き換えようとしません)。 エラーが発生した場合、それらの間で何らかの変更があったかどうかを確認するために、SendPortの現在のプロパティを再度タイプすることができますか? –

+0

私は実際に前後のプロパティを入力するオプションがありません。この問題は、初めてプロパティを読み取るときに発生しています。 SB-Messagingアダプタを使用している送信ポートでのみこの問題が発生していることに言及する価値があります。私は非常に喜んで読むことができますし、私はファイルアダプタの送信ポートを言うと反対に働いている場合は保存を呼び出します。 – EdL

+0

SendPortでエラーを再現し、プロパティを再度読み取って、SendPortスクリーンショットと同じであるかどうかを確認します。 –

0

ちょうどC#のからこれをやってみました、[OK]を動作するようです:

 var root = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer() { ConnectionString = "Data Source=(local);Initial Catalog=BizTalkMgmtDb;Integrated Security=SSPI;" }; 
     var sendPort = root.SendPorts["xxxx.ServiceBusQueue"]; 
     System.Diagnostics.Trace.TraceInformation(sendPort.PrimaryTransport.TransportTypeData); 
     sendPort .PrimaryTransport.TransportTypeData = sendPort.PrimaryTransport.TransportTypeData.Replace("RootManageSharedAccessKey", "MySharedAccessKey"); 
     root.SaveChanges(); 
関連する問題