【发布时间】:2015-07-02 17:34:10
【问题描述】:
程序
我要去:
1.从 Google Directory API 获取 OrgUnit
2. 读取 OrgUnit 并收集所需的数据
3. 尝试删除我刚刚收集的 OrgUnit。
这会导致 404 [Not Found] 错误
请记住,我正在使用的 DirectoryService 类工作正常。
我修改了此示例中的代码以使其易于阅读,例如:不包括异常处理等。
API
using Google.Apis.Admin.Directory.directory_v1
1.从 Google Directory API 获取组织单位
DirectoryService directoryService = ServiceInitializers.InitializeDirectoryService();
OrgUnit oUnit = directoryService.Orgunits.List(Settings.customerId).Execute().OrganizationUnits.FirstOrDefault();
2.读取组织单元并收集所需数据
string orgUnitPath = oUnit.OrgUnitPath;
3.尝试删除我刚刚收集的OrgUnit
var orgUnitDeleteResult = directoryService.Orgunits.Delete(Settings.customerId, orgUnitPath).Execute();
例外
GoogleApiException 未处理
Google.Apis.dll 中出现“Google.GoogleApiException”类型的未处理异常
附加信息:Google.Apis.Requests.RequestError 未找到单位部门 [404]
【问题讨论】:
-
您似乎在使用 FirstOrDefault(),如果域中实际上没有组织单位,它可能会给您一个空对象。您能否确认 orgUnitPath 已填充且不为空?
-
在这种情况下,第 2 步会给我一个 NullReferenceException
-
不一定是尼克。也许 OrganisationUnits 的 default 值是某种形式的包含空集合的对象。它可能不是 null,它可能意味着 orgUnitPath 返回一个空字符串或 null 值。你能证实吗?查看examples on Enumerable.FirstOrDefault 中的空数组。
-
对不起...我对 API 不够熟悉,无法提供任何更有用的答案。我建议尝试的一件事是查看the delete API doco,因为您似乎可以尝试通过网站删除。在使用 Fiddler 监控流量的同时尝试一下,看看 HTTP 请求/响应中是否还有其他内容可以提供一些关于为什么找不到它的信息。
-
我确实注意到 at this link 它声明 “您只能删除没有任何子组织单位或分配给它们的任何用户的组织单位。您需要将用户重新分配给其他组织单位并在删除之前删除任何子组织单位。” 也许检查并确认不是这种情况。也许您看到的错误是针对这样的一系列条件的通用错误。希望您无论如何都能找到答案。
标签: c# .net wcf google-admin-sdk google-directory-api