ModifyAttachments调用使用c#客户端库返回400错误

本文关键字:返回 错误 客户端 调用 ModifyAttachments | 更新日期: 2023-09-27 18:09:48

当学生提交作业时,下面的代码适用于大多数学生,但是对于一些学生,它会抛出一个带有400错误的异常:

var classroom = GetClassroomService();
var studentSubmissionsResponse = classroom.Courses.CourseWork.StudentSubmissions.List(courseId, courseWorkId).Execute();
var submission = studentSubmissionsResponse.StudentSubmissions.FirstOrDefault(s => s.AssociatedWithDeveloper ?? false);
var modifyAttachmentRequest = new global::Google.Apis.Classroom.v1.Data.ModifyAttachmentsRequest();
var link = new global::Google.Apis.Classroom.v1.Data.Link() { Url = url };
var attachment = new global::Google.Apis.Classroom.v1.Data.Attachment() { Link = link };
modifyAttachmentRequest.AddAttachments = new System.Collections.Generic.List<global::Google.Apis.Classroom.v1.Data.Attachment>();
modifyAttachmentRequest.AddAttachments.Add(attachment);
submission = classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments(modifyAttachmentRequest, courseId, courseWorkId, submission.Id).Execute();
/// submission code is after this; the exception is thrown by the call above

例外是:

The service classroom has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Request contains an invalid argument. [400]
Errors [
    Message[Request contains an invalid argument.] Location[ - ] Reason[badRequest] Domain[global]
]

遗憾的是,c#客户端库目前还不支持显示详细的错误消息。

你知道会发生什么吗?如何排除故障?

ModifyAttachments调用使用c#客户端库返回400错误

a400表示请求格式错误。也就是说,客户端发送给服务器的数据流不符合规则。

所以我要做的是解决这个问题是启动Fiddler,运行代码并将请求隔离到端点。然后可能将无效请求与有效请求进行比较,并确定差异。

注意,如果在状态为TURNED_IN的提交上调用modifyAttachments,将会得到一个400错误和一个无效参数异常。

从你的代码中我看不出你的一些学生的提交是否已经上交了。在我的情况下,我在调用turnIn并获得相同的错误后添加附件。颠倒调用的顺序解决了这个问题。