Microsoft在BizTalk管道界面中提供瞭如下所示的驗證組件。驗證BizTalk管道組件中的PropertyBag值
這裏是我試過了,似乎並沒有在所有的工作:
public System.Collections.IEnumerator Validate(object projectSystem)
{
System.Collections.ArrayList errorStringArrayList = new System.Collections.ArrayList();
if (this.Substring1ColumnStart >= this.Substring1ColumnEnd)
{
errorStringArrayList.Add("Substring1ColumnEnd must be > SubstringColumn1Start");
}
return (System.Collections.IEnumerator) errorStringArrayList;
}
說
「這些錯誤消息顯示爲編譯器錯誤信息。要報告 成功的屬性驗證,該方法應該返回一個空的 枚舉器。「
。
但是,當我輸入無效值時,我沒有收到任何編譯器消息。另外,它不會在BTS-Admin中進行驗證嗎?它不會有「編譯器消息」?
此外,爲什麼Validate接收通用對象作爲parm而不是強類型parm?何時驗證被調用?每次更改一個propertyBag值?
更新2017年5月11日在11:55 CT
我試了更多的東西,兩個硬將它們全部列出在這裏。 我終於得到了一個錯誤,但在VS編譯錯誤中不是很有用,請參閱下面的屏幕截圖。這絕對不是我返回的錯誤。也許這在VS2015上有問題。
我也陷入其中,我已修正數據的問題,並仍然得到錯誤。由於Pipeline Componenet是GAC的,我每次關閉並重新打開Visual Studio以確保它獲得新副本。
我在想也許是返回除null之外的任何東西都是問題。 總之,如果它在BTS-ADMIN中不起作用,我發現這實際上是無用的。所以我只會做運行時錯誤。也許這就是爲什麼在這個問題上有這麼一點文件和幾篇文章/博客。
public System.Collections.IEnumerator Validate(object projectSystem)
{
System.Collections.ArrayList errorStringArrayList = new System.Collections.ArrayList();
if (this.Substring1ColumnStart >= this.Substring1ColumnEnd)
{
errorStringArrayList.Add("Substring1ColumnEnd must be > SubstringColumn1Start");
}
if (errorStringArrayList.Count > 0)
{
return (System.Collections.IEnumerator)errorStringArrayList;
}
else
{
return null;
}
}
我已經在MSDN上回答了這個問題:https://social.msdn.microsoft.com/Forums/en-US/05cdf0ec-6e66-41c1-9faf-8f4ef6bb67f6/how-to-validate-value-in- the-propertybagbag-from-a-pipeline-component?forum = biztalkgeneral –