繁体   English   中英

使用Microsoft Planner API向用户分配新任务

[英]Assigning a user to a new task using Microsoft Planner API

我正在尝试使用Microsoft Graph API将用户分配给任务以访问Planner。 当我不尝试分配某人 (通过省略assignments部分)时, 我的代码工作正常 ,但是当我添加分配部分( 在此处的模板之后 )时,我又收到了BadRequest错误。

{“ error”:{“ code”:“”,“ message”:“请求无效:\\ r \\ nValue不能为null。\\ r \\ n参数名称:qualifiedName”,“ innerError”:{“ request-id” :“ ...”,“ date”:“ 2018-01-30T12:23:59”}}}

public TaskResponse CreateTask(string planId, string bucketId, string title, Dictionary<string, Assignment> assignments = null, DateTime? dueDateTime = null)
{
    RestRequest TaskRequest = new RestRequest("planner/tasks", Method.POST)
    {
        RequestFormat = DataFormat.Json
    };
    Dictionary<string, object> assignees = new Dictionary<string, object>();
    foreach(string assignment in assignments.Keys)
    {
        assignees.Add(assignment, new
        {
        });
    }
    var body = new
    {
        planId,
        bucketId,
        title,
        assignments = assignees,
        dueDateTime
    };
    TaskRequest.AddParameter("application/json", JsonConvert.SerializeObject(body), "application/json", ParameterType.RequestBody);
    IRestResponse TaskResponse = GraphClient.Execute(TaskRequest);
    if (!TaskResponse.IsSuccessful)
    {
        return null;
    }
    var result = JsonConvert.DeserializeObject<TaskResponse>(TaskResponse.Content);
    return result;
}

如果有人知道为什么响应表明我没有提供文档中从未提及的参数,我将不胜感激。

我设法通过使用适当的类而不是匿名类型来解决此问题。 通过这样做,我可以使用@odata.type注释属性,而将其作为变量名是不可接受的。

public class NewAssignment
{
    [JsonProperty("@odata.type")]
    public string ODataType { get; set; }

    [JsonProperty("orderHint")]
    public string OrderHint { get; set; }

    public NewAssignment()
    {
        ODataType = "#microsoft.graph.plannerAssignment";
        OrderHint = " !";
    }
}

这使我可以使用以下代码:

Dictionary<string, object> assignees = new Dictionary<string, object>();
foreach (string assignment in assignments.Keys)
{
    assignees.Add(assignment, new NewAssignment());
}
var body = new
{
    planId,
    bucketId,
    title,
    assignments = assignees,
    dueDateTime
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM