我正在尝试创建一个 Web 应用程序(托管在 Azure 上),使客户能够向我们的团队服务页面提交工作项。基本上是一个支持票据页面,这样他们就不必一直打电话解释他们的积压工作。
下面是我创建工作项的类和方法,遵循 Microsoft 的示例代码,并对隐私进行了一些明显的更改。这个方法由按钮点击触发,但到目前为止,我无法创建任何工作项。
在PATCH的URL中,我使用了团队项目的ID(代替下面所示的/exampleproject)。我们的网站设置了一个总体项目,让我们称其为“Master”,里面有一个针对每个客户的团队项目,例如“ClientProject”。因此,基本上我想在Master->ClientProject->Backlog/Board中创建一个“支持工单”工作项。
下面是我创建工作项的类和方法,遵循 Microsoft 的示例代码,并对隐私进行了一些明显的更改。这个方法由按钮点击触发,但到目前为止,我无法创建任何工作项。
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using Newtonsoft.Json;
namespace customapp
{
public class CreateWorkItem
{
public void CreateWorkItemMethod()
{
string personalAccessToken = "xxxxxxxxx";
string credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "xxx", personalAccessToken)));
Object[] patchDocument = new Object[1];
patchDocument[0] = new { op = "add", path = "/fields/System.Title", value = "Test" };
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
var patchValue = new StringContent(JsonConvert.SerializeObject(patchDocument), Encoding.UTF8, "application/json-patch+json");
var method = new HttpMethod("PATCH");
var request = new HttpRequestMessage(method, "https://example.visualstudio.com/exampleproject/_apis/wit/workitems/$Support&20Ticket?api-version=1.0") { Content = patchValue };
var response = client.SendAsync(request).Result;
if (response.IsSuccessStatusCode)
{
var result = response.Content.ReadAsStringAsync().Result;
}
}}}}
在PATCH的URL中,我使用了团队项目的ID(代替下面所示的/exampleproject)。我们的网站设置了一个总体项目,让我们称其为“Master”,里面有一个针对每个客户的团队项目,例如“ClientProject”。因此,基本上我想在Master->ClientProject->Backlog/Board中创建一个“支持工单”工作项。
$Support&20Ticket
,这应该改为Support%20Ticket
。请注意,没有前导美元符号,并且空格已正确转义为%20
而不是&20
。 - Daniel Mann