Элемент с тем же ключом уже добавлен. Ключ: принудительный набор для получения GetModelviewPropertiesAsync

#.net #autodesk-forge #autodesk-viewer #autodesk #autodesk-model-derivative

Вопрос:

Я использую библиотеку Forge Autodesk .NET(версия 1.9.0) для получения метаданных переведенного файла. Я использую приведенный ниже метод, так как свойства metadata_properties велики для файла.

 DynamicJsonResponse propertiesResponse = await derivativeApiInstance.GetModelviewPropertiesAsync
                                                                              (ForgeFileURN,                                                                               viewGUID,
                                                                              "gzip",
                                                                              null,
                                                                              false,
                                                                              true);
 

но я получаю ошибку — элемент с тем же ключом уже добавлен. Ключ: forceget. Может ли кто-нибудь, пожалуйста, помочь мне понять, чего мне здесь не хватает. Как я могу получить большие метаданные свойств переведенного файла?

Ответ №1:

Ваш вызов функции выглядит странно. последние два аргумента должны быть true/false, а не ключ-значение. т. е.,

 GetModelviewPropertiesAsync(
  ForgeFileURN,                                                                             
  viewGUID,
  "gzip",                                                                            
  null,
  false,
  true
);
 

Вот удаление функции:

 /// <summary>
/// 
/// </summary>
/// <remarks>
/// Returns a list of properties for each object in an object tree. Properties are returned according to object ID and do not follow a hierarchical structure.  The following image displays a typical list of properties for a Revit object:  ![](https://developer.doc.autodesk.com/bPlouYTd/7/_images/Properties.png)  To call this endpoint you need to first call the [GET {urn}/metadata](https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-GET) endpoint, which returns a list of model view (metadata) IDs for a design input model. Select a model view (metadata) ID to use when calling the Get Properties endpoint.  Note that you can only get properties from a design input file that was previously translated into an SVF file. 
/// </remarks>
/// <exception cref="Autodesk.Forge.Client.ApiException">Thrown when fails to make API call</exception>
/// <param name="urn">The Base64 (URL Safe) encoded design URN </param>
/// <param name="guid">Unique model view ID. Call [GET {urn}/metadata](https://developer.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-GET) to get the ID </param>
/// <param name="acceptEncoding">If specified with amp;#x60;gzipamp;#x60; or amp;#x60;*amp;#x60;, content will be compressed and returned in a GZIP format.  (optional)</param>
/// <param name="objectid">Object id which you want to query properties for.</param>
/// <param name="xAdsForce">If true - force retrieve the object tree even though it failed to be retrieved or got timeout (got 404 with error message) previously.</param>
/// <param name="forceget">If true - To force get the large resource even if it exceeded the expected maximum length (20 MB).</param>
/// <returns>Task of Metadata</returns>
System.Threading.Tasks.Task</*Metadata*/dynamic> GetModelviewPropertiesAsync(string urn, string guid, string acceptEncoding = null, List<int> objectIds = null, bool xAdsForce = false, bool forceget = false);
 

Комментарии:

1. Мои последние аргументы ложны и верны. Я просто упомянул имя переменной для лучшего понимания. это так же, как вы упомянули GetModelviewPropertiesAsync( ForgeFileURN, viewGUID, «gzip», null, false, true ); все равно получается та же ошибка.

2. Понял, пожалуйста, см. PR№91 forge-api-dotnet-client . Прежде чем он будет объединен, пожалуйста, подумайте о компиляции обновленной версии здесь .