如何处理 API 调用"Unexpected EOF at target"错误?



我正在创建一个Forge应用程序,该应用程序需要从BIM 360中心获取版本信息。有时它有效,但有时(通常在本次会话后已经运行代码之后(,我会收到以下错误:

Exception thrown: 'Autodesk.Forge.Client.ApiException' in mscorlib.dll
Additional information: Error calling GetItem: {
  "fault":{
    "faultstring":"Unexpected EOF at target",
    "detail": {
      "errorcode":"messaging.adaptors.http.flow.UnexpectedEOFAtTarget"
    }
  }
}

上述错误将从呼叫对API丢弃,例如其中之一:

dynamic item = await itemApi.GetItemAsync(projectId, itemId);
dynamic folder = await folderApi.GetFolderAsync(projectId, folderId);
var folders = await projectApi.GetProjectTopFoldersAsync(hubId, projectId);

在下初始化API如下:

ItemsApi itemApi = new ItemsApi();
itemApi.Configuration.AccessToken = Credentials.TokenInternal;

ID(例如'ProjectID','itemID'等(似乎在此错误时似乎没有什么不同,所以我不确定是什么原因导致错误。

i基于本教程的.NET版本:http://learnforge.autodesk.io/#/datamanagement/hubs/net

但我对其进行了调整,以便我可以异步检索多个节点(例如,用户可以访问的所有节点(而无需更改JSTREE。我这样做是为了允许在后台提取信息,而不会破坏用户的工作流程。我做出的主要更改是在服务器端添加另一条路线,该路线称为" gettreenodeasync"(从教程中(在树的根部异步,然后在每个返回的孩子,每个孩子,然后将其称为"在。函数等待使用任务处理所有节点。WHENALL,然后将每个节点的数据返回到客户端;

这意味着可能会有许多API调用异步运行,如果已经在JSTREE中打开节点,则可能会有重复的API调用,然后请求其信息以进行背景提取,或者背景提取的发生比一次。这似乎是最有可能发生错误的时候。

我想知道其他人是否遇到了这个错误,以及您是否知道我可以做些什么来避免它,或者在被捕时如何恢复。当前,在发生此错误之后,似乎所有其他API调用也会引发此错误,而我发现修复它的唯一方法是重新运行代码(我使用Visual Studio,所以我只是重新运行服务器和客户端,我的浏览器会自动启动(

由于我们目前正在内部研究的授权过程中的延迟问题,这些是我们Apigee路由器的零星错误。

当它们发生时,请停止所有即将提出的请求,等待几分钟,然后重试。看看这样的东西或这样可以帮助您。

和我们现有的报告提出类似错误似乎指向并发,是导致问题的因素之一,因此您可能还需要限制并发请求,看看是否会减轻问题。

最新更新