Можете ли вы удалить пустые элементы из входного XML, настроив MvcBuilder? [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Можете ли вы удалить пустые элементы из входного XML, настроив MvcBuilder? [закрыто]

Сообщение Anonymous »

У меня есть веб-API ASP.NET Core 9.0 с методом POST, который принимает XML. Сообщение передается в мой контроллер как десериализованный объект, однако любые пустые элементы в опубликованном XML-контенте вызывают проблемы с десериализацией. Когда я десериализую с помощью методов XDocument, я могу удалить пробелы, которые приводят к исключениям десериализации. Однако у меня возникли проблемы с доступом к вызову конфигурации в MvcBuilder, который выполнил бы тот же шаг.
Можно ли настроить MvcBuilder, возвращаемый AddControllers(), для удаления пробелов?
Вот моя программа.cs:

Код: Выделить всё

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers().AddXmlSerializerFormatters();

var app = builder.Build();

// Configure the HTTP request pipeline.

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();
Вот мой контроллер:

Код: Выделить всё

[Route("[controller]")]
[ApiController]
public class MyPlatformController : ControllerBase
{
//
[HttpPost]
[Produces("application/xml")]
public IActionResult PlatformService(RequestModel request)
{
var responseData = new TestResponse { Foo = 1, Bar = 101 };
//process request
return Ok(responseData);
}
}
Вот моя модель (репрезентативная, воспроизводящая проблему).

Код: Выделить всё

 [DebuggerStepThrough]
[DesignerCategory("code")]
[XmlType(AnonymousType = true)]
[XmlRoot]
[Serializable]
public class RequestModel
{
private int foo;

[DefaultValue(0)]
public int Foo
{
get { return foo; }
set { foo = value; }
}

private int bar;

[DefaultValue(0)]
public int Bar
{
get { return bar; }
set { bar = value; }
}
}

Я публикую XML-строку: Ошибка отправляется непосредственно обратно моему XML-клиенту и не регистрируется Microsoft.AspNetCore: «Удаленный сервер возвратил ошибку: (400) Неверный запрос». Хотя это действительно неправильный запрос, это интерфейс с устаревшей системой, для которого мне нужна повышенная отказоустойчивость.
Когда я заменяю на , я получаю ответ TestResponse, который указывает, что API работает нормально.
Меня также интересует модульное тестирование контроллера. Он не скомпилируется, если я попытаюсь передать строку xml в PlatformService() из метода модульного теста. Есть ли способ проверить десериализацию объекта RequestModel?

Подробнее здесь: https://stackoverflow.com/questions/797 ... mvcbuilder
Ответить

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

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

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

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

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