Quantcast
Channel: Team Foundation Server - General forum
Viewing all articles
Browse latest Browse all 6687

TFS client API - Search in item revisions

$
0
0

Hi,

I'm using TFS client API (no server permissions).

I wrote some code to search in item revisions.

When searching database using this code, a lot of times I got exception, probably for the linq part in code.

I cannot debug/understand/bypass it.

Could you help please?

Thanks

Yar

Background: Code uses 3 filtering levels:

1. Simple TFS query.

2. LINQ select.

3. Search in selected revisions

Code:

 var tfsUri = new Uri("http://nt-" + server + ":8080/tfs/NovaCollection");
                var tfsCollection = new TfsTeamProjectCollection(tfsUri);
                try
                {
                    tfsCollection.EnsureAuthenticated();
                }
                catch (Exception ex)
                {
                    System.Windows.MessageBox.Show("Ensure Authenticated failed.\n" + ex.Message + "\n" + ex.StackTrace);
                    return ;
                }

                try
                {
                    var workItemStore = tfsCollection.GetService<WorkItemStore>();
                    StringBuilder idsList = new StringBuilder();

                    
                    var changes =
                   workItemStore.Query(baseQuery)
                   .Cast<WorkItem>()
                   .SelectMany(wi =>
                       wi.Revisions
                       .Cast<Revision>()
                       .SelectMany(r =>
                           r.Fields
                           .Cast<Field>()
                           .Where(f => f.Name.Equals(primaryRevisionFieldName) && !String.IsNullOrEmpty(f.Value.ToString()) && f.Value.ToString().Contains(primaryRevisionValueContains) /*!= f.OriginalValue &&*/ )
                           .Select(f => (new { wi.Id, f.Value, f.ReferenceName, r.Index }))));

foreach (var element in changes)
                        {

                            int bugId = element.Id;
                            

                            var workItem = workItemStore.GetWorkItem(bugId);

                            System.Collections.IEnumerator rcEnum = workItem.Revisions.GetEnumerator();
                            for (int i = 0; i < element.Index + 1; i++)
                            {
                                rcEnum.MoveNext();
                            }



                            foreach (Field fld in ((Revision)(rcEnum.Current)).Fields)
                            {

                                if (fld.Name.Equals(secondRevisionFieldName))
                                {
                                    if (fld.Value.ToString().ToLower().Contains(secondRrevisionValueContains.ToLower()))
                                    {
                                        idsList.Append(element.Id.ToString() + ",");
                                        break;
                                    }
                                    else
                                    {
                                        break;
                                    }

                                }



                            }



                        }

Exception:

There is an error in XML document (1, 20783).
System.Xml.XmlException: '.', hexadecimal value 0x00, is an invalid character. Line 1, position 20783.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
   at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args)
   at System.Xml.XmlTextReaderImpl.ParseNumericCharRefInline(Int32 startPos, Boolean expand, StringBuilder internalSubsetBuilder, Int32& charCount, EntityType& entityType)
   at System.Xml.XmlTextReaderImpl.ParseCharRefInline(Int32 startPos, Int32& charCount, EntityType& entityType)
   at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
   at System.Xml.XmlTextReaderImpl.ParseText()
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.XmlTextReader.Read()
   at System.Xml.XmlReader.ReadElementString()
   at Microsoft.TeamFoundation.WorkItemTracking.Proxy.RowSetRow.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
   at Microsoft.TeamFoundation.WorkItemTracking.Proxy.RowSet.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
   at Microsoft.TeamFoundation.WorkItemTracking.Proxy.RowSetCollection.System.Xml.Serialization.IXmlSerializable.ReadXml(XmlReader reader)
   at System.Xml.Serialization.XmlSerializationReader.ReadSerializable(IXmlSerializable serializable, Boolean wrappedAny)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read34_GetWorkItemResponse()
   at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer9.Deserialize(XmlSerializationReader reader)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)


Viewing all articles
Browse latest Browse all 6687

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>