我的網路方法:
[HttpPost]
public async Task<IActionResult> UploadFile2(IFormFile file, int idPackage)
{
string output = $"{file.FileName} - {file.Length} - {idPackage}";
return Ok(output);
}
我的郵遞員要求:
POST https://localhost:7006/api/upload/UploadFile2 HTTP/1.1
User-Agent: PostmanRuntime/7.29.2
Accept: */*
Postman-Token: fc51918c-f03f-4e29-9726-6a5159dcb035
Host: localhost:7006
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------368567246425722572627984
Content-Length: 363
----------------------------368567246425722572627984
Content-Disposition: form-data; name="idPackage"
1247
----------------------------368567246425722572627984
Content-Disposition: form-data; name="file"; filename="dummy.dat"
Content-Type: application/octet-stream
dummy data from the dummy file
----------------------------368567246425722572627984--
file 引數正確接收上傳的檔案作為輸入。
idPackage 引數保持默認值 0,即使我為該值發送 1247。
這可能是什么原因造成的?
更新 1
我剛剛發現,這個相同的 Web 請求在我的另一個專案中確實有效。
它必須是某種服務器端設定,與請求的處理方式有關,盡管我目前不知道是哪一個。
更新 2
我認為它必須是我在其他專案中擁有的 Newtonsoft JSON 決議器配置。
原來不是這樣。那么仍然不知道它可能是什么。
有什么方法可以除錯 C# 如何在后臺處理 Web 請求?
uj5u.com熱心網友回復:
也許我會說一些愚蠢的話,但嘗試創建一個 DTO 類
DTO:
public class UploadFileDTO
{
public IFormFile File { get; set; }
public int IdPackage { get; set; }
}
方法
[HttpPost]
public async Task<IActionResult> UploadFile2([FromForm] UploadFileDTO input)
{
string output = $"{input.File.FileName} - {input.File.Length} - {input.IdPackage}";
return Ok(output);
}
來源:如何上傳帶有附加引數的 IFormFile
uj5u.com熱心網友回復:
我剛剛通過在額外引數前面添加 [FromForm] 屬性解決了這個問題。
[HttpPost]
public async Task<IActionResult> UploadFile2(IFormFile file, [FromForm]int idPackage)
{
string output = $"{file.FileName} - {file.Length} - {idPackage}";
return Ok(output);
}
為什么這不需要在我的舊生產專案中完成,而不是在我的新沙盒專案中......我不知道。
我猜他們用更新的 .NET 版本和/或 Nuget 包改變了一些東西。
我通過遇到這個人的代碼片段找到了解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/532141.html
上一篇:可觀察集合型別的繼承
