Refit — IFormFile возвращает 400 неверных запросовC#

Место общения программистов C#
Ответить
Anonymous
 Refit — IFormFile возвращает 400 неверных запросов

Сообщение Anonymous »

Чтобы добиться успеха, мне нужно пройти интеграционный тест. Предложите, есть ли альтернативный способ. я загружаю файл шаблона HTML
PortalIntegrationTests.Test.PdfTemplateServiceTest.ImportTemplateAsync_ShouldImportTemplate_WhenValidFileIsProvided(integratorAUsername: "alladmin@test.com", PASS: "Alladmin@123")
Источник: PdfTemplateServiceTest.cs line 2 4
Продолжительность: 35,7 секунды
Сообщение:
Refit.ValidationApiException: код состояния ответа не указывает на успех: 400 (неверный запрос).
Трассировка стека: 
IPdfTemplateRestApi.ImportPdfTemplateAsync(файл PdfTemplateAddModel)
PdfTemplateServiceTest.ImportTemplateAsync_ShouldImportTemplate_WhenValidFileIsProvided(String integratorAUsername, String PASS)
PdfTemplateServiceTest.I mportTemplateAsync_ShouldImportTemplate_WhenValidFileIsProvided(String integratorAUsername, String PASS)
-- - Конец трассировки стека из предыдущего местоположения ---
[Collection("IntegrationTestCollection")]
public class PdfTemplateServiceTest(AppServices appService, UserTestData userTestData)
{
private readonly IPdfTemplateRestApi _pdfTemplateRestApi = appService.GetApi();

[Theory]
[InlineData("alladmin@test.com", "Alladmin@123")]
public async Task ImportTemplateAsync_ShouldImportTemplate_WhenValidFileIsProvided(string integratorAUsername, string PASS)
{

var filePath = Path.Combine(Directory.GetCurrentDirectory(), "LicensePdfTemplates", "invoice.html");
if (!File.Exists(filePath))
throw new FileNotFoundException("The specified file was not found.", filePath);

await using var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
var formFile = new FormFile(fileStream, 0, fileStream.Length, "file", Path.GetFileName(filePath))
{
Headers = new HeaderDictionary(),
ContentType = "text/html"
};

var pdfTemplateAddModel = new PdfTemplateAddModel
{
File = formFile,
};

// Act
var result = await _pdfTemplateRestApi.ImportPdfTemplateAsync(pdfTemplateAddModel);

// Assert
Assert.NotNull(result);
Assert.Equal("example", result.TemplateName); // Adjust expected outcome

}

[Post("/PdfTemplate")]
Task
ImportPdfTemplateAsync([FromForm] PdfTemplateAddModel file);

public async Task ImportTemplate([FromForm] PdfTemplateAddModel pdfTemplateAddModel)
{
return await pdfTemplateService.ImportTemplateAsync(pdfTemplateAddModel, LoggedInUser);

}

это мой код, я не знаю, почему приходит 400 неверный запрос? Мне нужно знать причину этой ошибки и способы ее решения
public async Task ImportTemplateAsync(PdfTemplateAddModel pdfTemplateAddModel, LoggedInUser loggedInUser)
{
if (loggedInUser.IsIntegrator || loggedInUser.IsCustomer)
throw new AppException(Codes.Auth_Forbidden, Codes.Title_AccessDenied);

if (!Path.GetExtension(pdfTemplateAddModel.File.FileName).Equals(".html", StringComparison.CurrentCultureIgnoreCase))
throw new AppException(Codes.PdfTemplate_File_Extension, Codes.Title_PdfTemplateManagement);

var dateTime = DateTime.Now;
var templateName = Path.GetFileNameWithoutExtension(pdfTemplateAddModel.File.FileName);

if (await context.PdfTemplates.AnyAsync(t => t.TemplateName == templateName))
throw new AppException(Codes.PdfTemplate_File_Exist, Codes.Title_PdfTemplateManagement);

// Read the file content into a byte array
byte[] fileContent;
using (var memoryStream = new MemoryStream())
{
await pdfTemplateAddModel.File.CopyToAsync(memoryStream);
fileContent = memoryStream.ToArray();
}

var newTemplate = new PdfTemplate
{
TemplateId = Guid.NewGuid(),
TemplateName = templateName,
IsActive = false,
UploadDateTime = dateTime,
UploadedBy = loggedInUser.Email,
CreatedDateTime = dateTime,
LastModifiedDateTime = dateTime,
FileContent = fileContent
};

await context.PdfTemplates.AddAsync(newTemplate);
await context.SaveChangesAsync();

var logTemplateModel = new
{
newTemplate.TemplateId,
newTemplate.IsActive,
newTemplate.TemplateName,
newTemplate.UploadedBy
};

await auditEventSender.SendAsync(Codes.PdfTemplate_Import_Success, [new Metadata("PdfTemplate", logTemplateModel)], loggedInUser.Email);
return mapper.Map(newTemplate);
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... ad-request
Ответить

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

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

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

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

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