我正在尝试创建一个批处理请求,该请求将在单个请求中创建多个图形通知订阅。
我一直在阅读这篇文章: https://docs.microsoft.com/en-us/graph/sdks/batch-requests?tabs=csharp
问题
我收到以下错误消息,但我不知道如何解决:
(local variable) Task<Subscription> userRequest
Argument 1: cannot convert from 'System.Threading.Tasks.Task<Microsoft.Graph.Subscription>' to 'Microsoft.Graph.BatchRequestStep'
代码
var batchRequestContent = new BatchRequestContent();
GraphServiceClient graphClient = await GenerateGraphAuthToken(this.amParms);
foreach (string userId in this.UserstoSubscribe)
{
var subscription = new Subscription
{
ChangeType = "updated",
NotificationUrl= notificationURL,
Resource = $"users/{userId}/drive/root",
ExpirationDateTime = DateTimeOffset.Parse(subscriptionDate),
ClientState = "secretClientValue",
LatestSupportedTlsVersion = "v1_2"
};
var userRequest = graphClient.Subscriptions
.Request()
.AddAsync(subscription);
var userRequestId = batchRequestContent.AddBatchRequestStep(userRequest);
}
var returnedResponse = await graphClient.Batch.Request().PostAsync(batchRequestContent);
任何提示将不胜感激。对不起。我刚接触 .NET 和 MS Graph。
答案 0 :(得分:0)
AddBatchRequestStep
方法需要 BatchRequestStep
或 IBaseRequest
或 HttpRequestMessage
作为参数。
在您的情况下,您有一个 POST
请求,因此您必须获取 HttpRequestMessage
并转换为 POST
。
var subscription = new Subscription
{
ChangeType = "updated",
NotificationUrl= notificationURL,
Resource = $"users/{userId}/drive/root",
ExpirationDateTime = DateTimeOffset.Parse(subscriptionDate),
ClientState = "secretClientValue",
LatestSupportedTlsVersion = "v1_2"
};
// create a json content from the subscription
var jsonSubscription = graphClient.HttpProvider.Serializer.SerializeAsJsonContent(subscription);
// create a HttpRequestMessage, specify the method and add the json content
var userRequest = graphClient.Subscriptions.Request().GetHttpRequestMessage();
userRequest.Method = HttpMethod.Post;
userRequest.Content = jsonSubscription;
// add userRequest to a batch request content
var userRequestId = batchRequestContent.AddBatchRequestStep(userRequest);