Skip to main content

Dear Box Community,



We are currently using Box.V2 version 5.2.0 library for .NET to interact with Box documents. However, we periodically encounter the following error: “System.IO.IOException: The response ended prematurely”. This error occurs most frequently when using the GetFolderItemsAsync method, but occasionally with GetRepresentationContentAsync as well. It is important to note that this error does not occur for all folders, and after waiting and retrying the request for a specific folder, the method can execute successfully.



For our most recent run, we set a timeout of 10 minutes for the HttpRequestHandler. However, based on the logs, it is evident that for the folders where the error occurred, the connection was terminated after approximately 8 minutes




We would greatly appreciate any insights you can provide regarding the potential causes of this error, why the connection is being terminated before reaching the set timeout and any suggestions for resolving it.



Thank you for your attention to this matter. We look forward to your prompt assistance.



Good regards,


Nikita

hi @nikita ,



I will try to help you with this issue.


But first, can you tell us what .NET Framework version you are using and on which OS?



Did this error start to appear from some specific moment or event, such as an SDK update or OS patch installation?



And also, can you provide us most inner exception within this one “System.IO.IOException: The response ended prematurely”.


It should have more details about the root cause, and then it would be much easier to investigate.



I found an issue on dotnet github that fits our case.


HttpClient The response ended prematurely · Issue #72177 · dotnet/runtime · GitHub.


Can you make sure you have those patches installed?



In the meantime, I’ll try to reproduce this error on my side



Regards,


Artur


Hello again,



Apart from questions above, few more came to my mind.



I would be grateful if you could answer them as well.







  1. Can you show us snippet of code which you are execute?


    I’m interested about params you are passing







  2. Are those folders where I get this error when calling the getFolderItemsAsync method somehow unique?


    Can you tell us how many items they have inside?







  3. Do other commands also last as long as this one, around 8 minutes?







  4. Are you able to get the RequestID from the error you received? This would help us track and analyze the request on our side.







  5. Can you try to call the same endpoint but via powershell Invoke-RestMethod and tell us about the results?


    Here is sample code where you can replace <<_YOUR_ACCESS_TOKEN_HERE_>>, <<_YOUR_FOLDER_ID_>> and <<_YOUR_ADDITIONAL_QUERY_PARAMS_>> to match the query to your criteria.







$headers = New-Object "System.Collections.Generic.DictionaryryString],]String]]"



$headers.Add("Authorization", "Bearer <<_YOUR_ACCESS_TOKEN_HERE_>>")



$response = Invoke-RestMethod 'https://api.box.com/2.0/folders/<<_YOUR_FOLDER_ID_>>/items?limit=1000&<<_YOUR_ADDITIONAL_QUERY_PARAMS_>>' -Method 'GET' -Headers $headers



$response | ConvertTo-Json





Regards,


Artur


Hi @ajankowski,



Our application is written in .NET 6, application runs on Windows.



Nothing preceded this problem, at some point we started getting this error, the SDK version did not change



We have two examples for inner exception:







  1. System.IO.IOException: The response ended prematurely.


    at System.Net.Http.HttpConnection.FillAsync(Boolean async)


    at System.Net.Http.HttpConnection.ChunkedEncodingReadStream.CopyToAsyncCore(Stream destination, CancellationToken cancellationToken)


    at System.Net.Http.HttpConnectionResponseContent.SerializeToStreamAsync(Stream stream, TransportContext context, CancellationToken cancellationToken)


    at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, MemoryStream tempBuffer)







  2. System.IO.IOException: The response ended prematurely.


    at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)








We use a standard function from the SDK that is wrapped in a loop to get all the items in a folder.


var folderItems = await boxClient.FoldersManager.GetFolderItemsAsync(id, paginationSize, offset, fields);


offset += paginationSize;





I will try to figure out the number of items in the folders for which the error occurred





No, the rest of the commands work out pretty quickly. Also getFolderItemsAsync command does not always work out so long





No, I can’t get the RequestId





We will try to execute this command


Hello,



We are tried the suggested PowerShell scripts and got



Invoke-RestMethod : The remote server returned an error: (404) Not Found.


At line:5 char:13







  • $response = Invoke-RestMethod 'https://api.box.com/2.0/folders/194829













  • CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) )Invoke-RestMethod], WebException







  • FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand







Our colleague also used Curl to see if he could get any more info. From Curl,


{“type”:“error”,“status”:404,“code”:“not_found”,“context_info”:{“errors”:c{“reason”:“invalid_parameter”,“name”:“folder”,“message”:“Invalid value ‘d_142133921794’. ‘folder’ with value ‘d_142133921794’ not found”}]},“help_url”:“http://developers.box.com/docs/#errors”,“message”:“Not Found”,“request_id”:“xfu8pahfngxdoe13”}



He can put the URL in a browser and it shows a list of files/folders in that folder. He tested all them in both browser and PowerShell. They all work in the browser and fail (404) in PowerShell.



He also tested putting in invalid Bearer token and got a different error, so he feels confident the command line is connecting and authenticating. However, it’s unclear why no results are being returned.



Regards,


Vitali


The error messages you got suggest that the folder id was misformatted (should be all digits, not “d_142133921794”). Can you check your script and try again?



Also, please restate what other problems you’re still currently facing here. Thanks




Hi @nikita



As your log above, seems like the connection auto terminated after around 8 minutes. I’m trying to reproduce that issue but it’s seem like I don’t have any request could read 8 minutes waiting time.



So can you provide some information which could help me check this:





  • Do you have any Box Shield, Collaborators, Retention Policy, Classification, … enabled on these folder?


  • What is the limit number of items you used to get items in the folder?


  • Any other specific folder configuration?




I tried to get items with limit 1000 files, and it just take around 3 secs to complete, so I’m not sure how can you reach 8 minutes waiting?



Regards,


Minh


Reply