2017-09-27 49 views
0

我正在使用Microsoft.BizTalk.ExplorerOM動態更新用於BizTalk接收的SB-Messaging SAS密鑰的PowerShell腳本位置和發送端口。這是爲了讓我們能夠爲我們的Service Bus隊列推出SAS密鑰,並儘可能輕鬆地更新BizTalk和新密鑰。使用Microsoft.BizTalk.ExplorerOM讀取SB-Messaging發送端口屬性進行中斷更改

我有這個工作正確接收地點,但發送端口給我一個不同的問題。

當我讀發送端口的PrimaryTransport性質,似乎有些變化是在幕後做,是那麼的SaveChanges防止來自工作,而不是拋出一個「無效或畸形XML數據異常」。

Send Port SaveChanges exception

這是相對於該ReceiveLocation,在那裏我可以讀取任何屬性,然後調用SaveChanges成功。

Receive Location successful SaveChanges

注意,在這兩種情況下這種,沒有發生任何變化我做的。我只是做一個閱讀,然後一個保存。

任何人都可以提供任何建議,以什麼可能會導致問題,以及任何可能的解決方案嘗試?

回答

0

在使用Powershell替換ServiceBus ReceiveLocations & SendPorts中的值時,出現了這個非常相同的問題。

問題在於TransportTypeData中沒有有效的xml符號,當腳本在PS cmd中讀取它們時,它們會被轉換。

所有沒有有效的XML符號(如增齡的命名空間值)需要轉換到放大器,如果我沒有記錯的話,即使雙功放:編輯。

這裏是顯示在我的意思實例的實例文章「雙功放:ED」: How do I escape ampersands in XML so they are rendered as entities in HTML?

希望這是有意義的,如果沒有,那麼讓我知道,我給它另一個去。

+0

現在見我倉促得出結論,總部設在TransportTypeData替換值時,我自己的經驗。 不,我不知道爲什麼它會以錯誤結尾,當你簡單地輸入當前屬性(而不是實際試圖替換,如我第一次想到的)。 當錯誤發生時,你能再次鍵入出於對發送端口的當前屬性,看看它們在某種程度上之間改變了? –

+0

我真的沒有選擇在前後輸入屬性。這是我第一次閱讀這些屬性時發生的問題。 別的東西,可能是值得一提的是,這個問題只與使用SB-消息適配器發送端口發生。我可以非常高興地閱讀,然後打電話保存,如果我正在反對說一個文件適配器發送端口。 – EdL

+0

重現錯誤的發送端口,然後再讀取屬性,看他們是否保持相同發送端口的截圖。 –

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(); 
相關問題