以下代码适用于教室中的大多数学生提交作业时,但是如果一些学生出现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#客户端库目前还不支持显示详细的错误消息。
关于可能发生的事情的任何想法?如何排除故障?
答案 0 :(得分:1)
A 400表示请求格式错误。换句话说,客户端发送到服务器的数据流不符合规则。
所以我要做的就是解决这个问题,就是启动Fiddler,运行代码并将请求隔离到端点。然后可能将无效请求与有效请求进行比较并确定差异。
答案 1 :(得分:0)
请注意,如果您对状态为 modifyAttachments
的提交调用 TURNED_IN
,您将收到 400 错误和无效参数异常。
我无法从您的代码中判断您的某些学生提交的内容是否已上交。就我而言,我在调用 turnIn
后添加了附件并收到相同的错误。颠倒调用顺序解决了它。