0

我正在尝试使用 JavaScript 使用 ClientService.asmx 检索 TFS 工作项,并且我能够访问 Web 服务,但是当使用 SOAP 时,它给了我以下错误“TF51612:查询不包含任何组或表达式。参数名称:queryXml”

下面是我用来访问工作项的代码:

  <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
  <RequestHeader xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/WorkItemTracking/ClientServices/03">
  <Id></Id>
  </RequestHeader>
  </soap:Header>
  <soap:Body>
  <QueryWorkitems xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/WorkItemTracking/ClientServices/03">
  <psQuery>
  <queryXml>
  <Wiql>SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] FROM WorkItems WHERE [System.TeamProject] = @project  AND  [System.WorkItemType] &lt;&gt; ''  AND  [System.State] &lt;&gt; '' ORDER BY [System.Id] </Wiql>
  </queryXml>
  </psQuery>
  </QueryWorkitems>
  </soap:Body>
  </soap:Envelope>

请让我知道我做错了什么。谢谢

4

2 回答 2

0

经过一番痛苦,我想出了如何对这项服务提出适当的请求。这是我的全部要求。请原谅我的格式化。我显然太笨了,无法弄清楚如何做一个正确的清单。

几个笔记...

*RequestHeader Id 字段的格式必须为 uuid:GUID

* psQuery 元素实际上并不在 Wiql 中,正如其他网络资源所暗示的那样。(您收到的错误是哪个)

*数字字段的 FieldType 是 288

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://schemas.microsoft.com/TeamFoundation/2005/06/WorkItemTracking/ClientServices/03">
<soapenv:Header>
<ns:RequestHeader>
<!--Optional:-->
<ns:Id>uuid:262c6910-8394-11e3-baa7-0800200c9a67</ns:Id>
</ns:RequestHeader>
</soapenv:Header>
<soapenv:Body>
<ns:QueryWorkitems>
<!--Optional:-->
<ns:psQuery>
<Group GroupOperator="And">
<Expression Column="System.TeamProject" FieldType="16" Operator="equals"><String>ProjectName</String></Expression>
<Expression Column="System.AssignedTo" FieldType="16" Operator="equals"><String>Daniel West</String></Expression>
<Expression Column="System.WorkItemType" FieldType="16" Operator="equals"><String>Anomaly</String></Expression>
<Expression Column="System.State" FieldType="16" Operator="equals"><String>Validate</String></Expression>   
</Group>
</ns:psQuery>
<ns:sort>
<!--Zero or more repetitions:-->
<ns:QuerySortOrderEntry>
<!--Optional:-->
<ns:ColumnName>System.AssignedTo</ns:ColumnName>
<ns:Ascending>1</ns:Ascending>
</ns:QuerySortOrderEntry>
</ns:sort>
<ns:useMaster>1</ns:useMaster>
</ns:QueryWorkitems>
</soapenv:Body>
</soapenv:Envelope>
于 2014-01-22T19:27:46.923 回答
0

您的标头 SOAP 必须包含有关您的凭证的信息,因为您的查询标头是空的,因此您没有经过身份验证

在您的 Web 服务中使用 Soap Extension 添加它,在配置文件中注册

于 2013-11-08T14:41:46.973 回答