#c# #vb.net #json.net #base64 #asp.net-web-api2
#c# #vb.net #json.net #база 64 #asp.net-web-api2
Вопрос:
У меня есть VB.net приложение, которому необходимо вызвать веб-api C# с некоторыми параметрами, включая множество файлов в кодировке base64.
Я обнаружил, что лучший способ передать эти данные приложению-создать объект задания со всеми данными и передать его в WebAPI, чтобы он мог считываться как динамический объект
вот в чем дело vb.net «передний конец»
Dim jObj As JObject = New JObject From { {"Field1", "foo"}, {"Field2", "foo"}, {"ListFileFotoBase64", JToken.FromObject(lstFileFotoBase64)} } Dim uri As New Uri(Url amp; $"WebApiMethod") Using client As HttpClient = New HttpClient client.DefaultRequestHeaders.Authorization = New AuthenticationHeaderValue("Bearer", Token) Dim content As StringContent = New StringContent(jObj.ToString, Encoding.UTF8, "application/json") Using response As HttpResponseMessage = client.PostAsync(uri, content).Result Dim res As String = response.Content.ReadAsStringAsync().Result Dim httpResponse As HttpResponseCustom = JsonConvert.DeserializeObject(Of HttpResponseCustom)(res) Return httpResponse End Using End Using
lstFileFotoBase64-это список строк, которые могут содержать до 100 файлов в кодировке base64
и вот как я прочитал в проекте C# WebAPI:
[Route("WebApiMethod")] [ResponseType(typeof(HttpResponseCustom))] [HttpPost] public IHttpActionResult WebApiMethod(dynamic value) { try { Listlt;stringgt; ListFileFotoBase64 = ((JArray)value.ListFileFotoBase64).ToObjectlt;Listlt;stringgt;gt;();
проблема в том, что если я загружу 61 элемент lstFileFotoBase64, весь динамический объект будет равен нулю, но если я удалю lstFileFotoBase64 из объекта задания, он будет работать нормально. Я всегда передаю файл в кодировке base64 в webapi, и у меня не возникает никаких проблем.
Спасибо за совет
Комментарии:
1. «если я загружу 61 элемент lstFileFotoBase64, весь динамический объект будет равен нулю» — работает ли это для других величин?
2. @AndrewMorton похоже, что если я, например, загружу только один элемент, он будет работать