我正在尝试使用Powershell Core将JSON文件上传到.Net Core 3 WebApp,但无法正常工作。“文件”始终为null。
在WebApp的代码下方:
[HttpPost]
public async Task<ActionResult> UploadFile(IFormFile file)
{
if (!ModelState.IsValid)
return BadRequest();
var path = Path.GetTempFileName();
var stream = new FileStream(path, FileMode.Create);
await file.CopyToAsync(stream);
string FileName = file.FileName;
// .. parsing the file
return Ok();
}
以及来自Powershell的实际要求:
$file = '/fileToUpload.json'
Invoke-RestMethod -Uri 'https://localhost:5001/uploadfile' -Method Post -InFile $file -ContentType 'application/json'
但是此请求始终返回以下错误:
Invoke-RestMethod : System.NullReferenceException: Object reference not set to an instance of an object.
当在方法中设置断点时,我可以看到“文件”始终为空。
最初,我从一个接受正文中JSON数据的方法开始,但是在使用Invoke-RestMethod时,Post请求的正文中似乎存在某种限制,因此我不得不想出另一种解决方案来解决此“限制'。我在使用Postman时没有遇到限制问题,所以我想它与Powershell有关。如果有人知道如何解决此“正文限制”问题,那将更大,因为我更喜欢在正文中发布JSON数据而不是发布文件。
希望有人能帮助我。提前致谢。
好的,我设法解决了最初的问题:使用Invoke-RestMethod cmd-let时,POST请求中主体的有效负载限制。我使用curl进行了切换,现在一切都按预期运行,因此我不必发布文件而不是JSON数据(现在顺便说一句也可以正常工作)。
这是我用于可能遇到相同问题的所有命令的curl命令:
curl --url 'https://localhost:5001/postJSON' --insecure -H 'Content-Type: application/json' --request POST --data @fileToUpload.json
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句