2017-09-27 48 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(); 
相关问题