Hello,
I have a very strange code behavior that I cannot make heads or tails of:
I have c# code being executed in BizTalk assemblies which is acting very
strangely.
In my BizTalk process I call a static method:
public static string ValidateMessage (params...)
When I call this method the FIRST TIME, everything is fine, and the
DebugView outputs the following...
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ASSERTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
Then it gets strange.... when I execute it a second time, I get:
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ASSERTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
A third time I get:
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ASSERTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
And so on... It keeps piggy-backing these past method calls and I don't know
why!
If I restart the BizTalk host, the first call behaves normally as described
above and then this problem begins again.
Someone suggested there was something static is being appended, but I cant
see it in the code. If you see something, please let me know. The reason I
tend to agree is because the line "AL.TechSvcs.Pr ocurement.Suppo rt ::
BusinessRulesVe rification ASSERTED " appears 2/3 of the way thru and its the
very first thing which is done when the code is executed. It does not
appear that the logic is executing 3x, just the output to the debug view.
If there is something appended, where am I allowing this to happen in the
code below?
using System;
using System.Xml;
using System.Collecti ons.Generic;
using System.Text;
using System.Collecti ons;
using System.Diagnost ics;
using Microsoft.RuleE ngine;
namespace AL.TechSvcs.Pro curement.Suppor t
{
public class BusinessRulesVe rification
{
public BusinessRulesVe rification()
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification ASSERTED");
}
public static string VerifyPOLineUni que(TypedXmlDoc ument rootNode,
string PoNum, string xpath, string xLineNum)
{
XmlNodeList PoLines;
try
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: VerifyPOLineUni que STARTED");
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: PO NUM = " + PoNum);
PoLines = rootNode.Docume nt.SelectNodes( String.Format(x path,
PoNum));
if (PoLines.Count 0)
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: PO lines 0");
//PUT MATCHING PO NUMBERS IN AN ARRAY
ArrayList arrLineNums = new ArrayList();
foreach (XmlNode node in PoLines)
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: looping thru lines");
arrLineNums.Add (node.SelectSin gleNode(xLineNu m).InnerText);
}
int i, j;
for (i = 0; i < arrLineNums.Cou nt - 1; i++)
{
for (j = i + 1; j < arrLineNums.Cou nt; j++)
{
if (arrLineNums[i].Equals(arrLine Nums[j]))
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort
:: BusinessRulesVe rification :: found non-unique line !!");
return "False";
}
}
}
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: all lines are unique");
return "True";
}
else
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: no PO lines found");
return string.Empty;
}
}
catch (Exception e)
{
Debug.WriteLine (exception.ToSt ring());
EventLog.WriteE ntry("Biztalk", String.Format(" Error occured
when trying to find unique PO lines. Return empty string"),
EventLogEntryTy pe.Error);
throw e;
}
}
}
}
If anyone has seen this or knows what I am doing wrong, please help.
Thanks,
BA
I have a very strange code behavior that I cannot make heads or tails of:
I have c# code being executed in BizTalk assemblies which is acting very
strangely.
In my BizTalk process I call a static method:
public static string ValidateMessage (params...)
When I call this method the FIRST TIME, everything is fine, and the
DebugView outputs the following...
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ASSERTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
Then it gets strange.... when I execute it a second time, I get:
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ASSERTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
A third time I get:
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ASSERTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification ::
VerifyPOLineUni que STARTED
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO NUM =
V36000630000100 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: PO lines 0
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: looping thru
lines
AL.TechSvcs.Pro curement.Suppor t :: BusinessRulesVe rification :: all lines
are unique
And so on... It keeps piggy-backing these past method calls and I don't know
why!
If I restart the BizTalk host, the first call behaves normally as described
above and then this problem begins again.
Someone suggested there was something static is being appended, but I cant
see it in the code. If you see something, please let me know. The reason I
tend to agree is because the line "AL.TechSvcs.Pr ocurement.Suppo rt ::
BusinessRulesVe rification ASSERTED " appears 2/3 of the way thru and its the
very first thing which is done when the code is executed. It does not
appear that the logic is executing 3x, just the output to the debug view.
If there is something appended, where am I allowing this to happen in the
code below?
using System;
using System.Xml;
using System.Collecti ons.Generic;
using System.Text;
using System.Collecti ons;
using System.Diagnost ics;
using Microsoft.RuleE ngine;
namespace AL.TechSvcs.Pro curement.Suppor t
{
public class BusinessRulesVe rification
{
public BusinessRulesVe rification()
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification ASSERTED");
}
public static string VerifyPOLineUni que(TypedXmlDoc ument rootNode,
string PoNum, string xpath, string xLineNum)
{
XmlNodeList PoLines;
try
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: VerifyPOLineUni que STARTED");
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: PO NUM = " + PoNum);
PoLines = rootNode.Docume nt.SelectNodes( String.Format(x path,
PoNum));
if (PoLines.Count 0)
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: PO lines 0");
//PUT MATCHING PO NUMBERS IN AN ARRAY
ArrayList arrLineNums = new ArrayList();
foreach (XmlNode node in PoLines)
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: looping thru lines");
arrLineNums.Add (node.SelectSin gleNode(xLineNu m).InnerText);
}
int i, j;
for (i = 0; i < arrLineNums.Cou nt - 1; i++)
{
for (j = i + 1; j < arrLineNums.Cou nt; j++)
{
if (arrLineNums[i].Equals(arrLine Nums[j]))
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort
:: BusinessRulesVe rification :: found non-unique line !!");
return "False";
}
}
}
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: all lines are unique");
return "True";
}
else
{
Debug.WriteLine ("AL.TechSvcs.P rocurement.Supp ort ::
BusinessRulesVe rification :: no PO lines found");
return string.Empty;
}
}
catch (Exception e)
{
Debug.WriteLine (exception.ToSt ring());
EventLog.WriteE ntry("Biztalk", String.Format(" Error occured
when trying to find unique PO lines. Return empty string"),
EventLogEntryTy pe.Error);
throw e;
}
}
}
}
If anyone has seen this or knows what I am doing wrong, please help.
Thanks,
BA
Comment