Объект, опубликованный в API, является NULL в клиенте .NET 8, но работает в Framework 4.8C#

Место общения программистов C#
Ответить
Anonymous
 Объект, опубликованный в API, является NULL в клиенте .NET 8, но работает в Framework 4.8

Сообщение Anonymous »

У меня есть приложение клиента Winform, которое первоначально нацелено на .NET Framework 4.8, которое я обновил до .NET 8. Клиент отправляет класс на локальный сервер MVC.3, который сохраняет объект на сервер. Код работает в приложении 4.8 Framework, но в приложении .NET 8 объект получен API как NULL. Код не был изменен, и он компилизируется и работает без ошибок, за исключением того факта, что объект не передается. Пакет Newtonsoft.json 13,3, то же самое для обоих приложений. Вот мой клиент -код: < /p>
public async Task putBudgetasync(Institution_Budget ib)
{

HttpClientHandler handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
using (var client = new HttpClient(handler))
{
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var myuri = new Uri(urlbase + "api/InstBudget/");
HttpResponseMessage response =
await client.PutAsJsonAsync(myuri, ib); // I suspect the putasjson is not working in .NET 8 as it did in the framework app
if (response.IsSuccessStatusCode)
{
return "OK_putBudget";
}
else
{
return "Error_putBudget";
}
}
< /code>
Вот код контроллера API. Как указывалось, когда вызов сделан из клиента IB, не является нулевым, он принимается контроллером как NULL (в клиенте .NET 8, но не Framework 4.8). API достигается только код в первой строке, так как объект IB является нулевым. < /P>
[ResponseType(typeof(void))]
[System.Web.Http.HttpPut]
[Route("api/InstBudget/")]
public async Task PutInstitution_Budget([FromBody] Object
sourceinstitution_Budget) // The source institution_Budget is null in .NET 8
{
Institution_Budget_Sys GetterObject = Repo.ConverttoServerObject(sourceinstitution_Budget)
long counter = (long)GetterObject.GetType()
.GetProperty("Counter")
.GetValue(GetterObject, null);
string instcode =
(string)
GetterObject.GetType().GetProperty("InstCode").GetValue(GetterObject, null);
Institution_Budget_Sys institutionbudget = GetInstbyCounterInstcode(counter,
instcode);
if (sourceinstitution_Budget == null)
{
return BadRequest();
}

Reposotories.Repository.DTOtransfer(institutionbudget, GetterObject);

try
{
await db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!Institution_BudgetExists(institutionbudget.id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... mework-4-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»