У меня есть приложение клиента 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
Объект, опубликованный в API, является NULL в клиенте .NET 8, но работает в Framework 4.8 ⇐ C#
Место общения программистов C#
1738838082
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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79417550/object-posted-to-api-is-null-in-net-8-client-but-works-in-framework-4-8[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия