Я вызываю API-интерфейсы получения, обновления и удаления для организационного подразделения через клиентскую библиотеку Google .net, но получаю 404. Я использовал Fiddler и увидел, что URL-адрес запроса имеет неверный формат. Вместо пути к организационному подразделению я вижу в URL-адресе строку {/orgUnitPath*}, а идентификатор клиента заменяется фактическим идентификатором клиента. Я сделал этот запрос с фактическим путем к организационному подразделению в Fiddler, и он работает нормально.
Путь моего организационного подразделения — ABC/IT, и я предполагаю, что есть некоторая проблема с инициализацией повторяемой строки, потому что мои API-интерфейсы вставки и списка работают нормально:
Repeatable<string> rep = new Repeatable<string>(new List<string>{orgUnitPath});
OrgunitsResource.GetRequest gr = service.Orgunits.Get(GetGoogleUser(ConfigManager.AdminIdentity, accessToken).CustomerId, rep);
OrgUnit orgUnit = gr.Fetch();
Я делаю что-то не так здесь?
Мой новый код после обновления клиентской библиотеки:
public OrgUnit GetGoogleOrganizationUnit(string orgUnitPath, string accessToken)
{
AccessToken = accessToken;
var service = new DirectoryService(GetGoogleServiceClient());
Repeatable<string> rep = new Repeatable<string>(new List<string> { orgUnitPath });
OrgunitsResource.GetRequest gr = service.Orgunits.Get(GetGoogleUser(ConfigManager.AdminIdentity, accessToken).CustomerId, rep);
OrgUnit orgUnit = gr.Execute();
return orgUnit;
}
Ниже приведена трассировка стека:
[JsonReaderException: Error parsing NaN value. Path '', line 0, position 0.]
Newtonsoft.Json.JsonTextReader.ParseNumberNaN() +97
Newtonsoft.Json.JsonTextReader.ParseValue() +400
Newtonsoft.Json.JsonTextReader.ReadInternal() +35
Newtonsoft.Json.JsonTextReader.Read() +20
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter) +74
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) +442
Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) +687
Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings) +111
Newtonsoft.Json.JsonConvert.DeserializeObject(String value, JsonSerializerSettings settings) +66
Newtonsoft.Json.JsonConvert.DeserializeObject(String value) +42
Google.Apis.Json.NewtonsoftJsonSerializer.Deserialize(String input) in c:\code.google.com\google-api-dotnet-client\default_3\Tools\Google.Apis.Release\bin\Debug\output\default\Src\GoogleApis\Apis\Json\NewtonsoftJsonSerializer.cs:72
Google.Apis.Services.<DeserializeError>d__9.MoveNext() in c:\code.google.com\google-api-dotnet-client\default_3\Tools\Google.Apis.Release\bin\Debug\output\default\Src\GoogleApis\Apis\Services\BaseClientService.cs:357
[GoogleApiException: An Error occurred, but the error response could not be deserialized]
BLL.GoogleAPIManagerBLL.GetGoogleOrganizationUnit(String orgUnitPath, String accessToken) in c:\Projects\FGPortal\BLL\GoogleAPIManagerBLL.cs:504
Application.ManageOrgUnits.gvorgunits_RowCommand(Object sender, GridViewCommandEventArgs e) in c:\Projects\FGPortal\Application\ManageOrgUnits.aspx.cs:29
System.Web.UI.WebControls.GridView.OnRowCommand(GridViewCommandEventArgs e) +111
System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +73
System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) +89
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e) +88
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +121
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +156
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9642898
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724