使用BizTalk 2013r2 CU1,我爲入站xsd創建了屬性架構並部署了應用程序。BizTalk - 無法提升屬性
當我使用標準的「xml receive」管道接收到一個示例xml文檔時,我可以看到所需的元素被按照預期提升到上下文中。
然後我創建了一個自定義管道,其中包含「反彙編」階段中的「XML反彙編程序」組件和「驗證」階段中的自定義組件。這個自定義組件需要從上下文中讀取提升的屬性。但是,我發現當我將接收位置從「xml receive」管道切換到自定義管道時,我的屬性沒有得到提升。我用我的自定義組件中下面的代碼寫出來的項目在消息上下文的列表:
for (int x = 0; x < contextList.CountProperties; x++)
{
contextList.ReadAt(x, out name, out nspace);
string value = contextList.Read(name, nspace).ToString();
contextItems += "Name: " + name + " - " + "Namespace: " + nspace + " - " + value + "\r\n";
if (name == _ContextPropertyName && nspace == _ContextPropertyNamespace)
promotedPropFound = true;
}
Helpers.EventLogHelper eventHelper = new EventLogHelper();
eventHelper.LogEvent(string.Format("Context items:{0}", contextItems));
if (promotedPropFound == false)
throw new Exception(string.Format("Unable to find promoted property with name[{0}] and namespace [{1}]", _ContextPropertyName, _ContextPropertyNamespace));
從事件輸出日誌,我可以看到,某些性能,如消息類型得到了推廣,但我自定義屬性沒有。同樣,如果我將接收位置改回到使用標準的「xml接收」管道,那麼屬性將從同一個xml文檔的副本升級(我通過停止訂閱發送端口並從管理控制檯查看上下文來檢查該屬性)。
我覺得這很奇怪,因爲在相同的(默認)配置下,兩個管道的「反彙編」階段中存在相同的「XML反彙編程序」組件。我開始認爲2013r2CU1可能存在問題 - 是否有其他人遇到過相同的問題?
感謝您的詳細回覆加里,我想你可能是對的。我現在的問題是如何連接它。據我所知,AfterLastReadEvent委託不接受管道上下文 - 我需要能夠訪問。我對代表沒有太多經驗 - 你知道在事件發生時是否可以通過管道上下文嗎? –
@RobBowman是的,有可能。我已經更新了我的答案。我假設你想傳遞消息上下文而不是管道上下文。 –
感謝您的更新加里。對不起,這讓我很長時間,但目前我每天早上只有20分鐘的時間來處理這個問題。你知道一個鏈接到一個EventingReadStream的例子嗎?我一直無法找到一個。在我的「DoSomething」事件中,我現在擁有執行所需映射的代碼。我現在的問題是我不知道如何將其分配迴流。我應該將流作爲ref參數傳遞給事件,那麼對它的任何更新都會使它成爲BizTalk的方式? –