这是我从一个Web应用程序向另一个应用程序发送请求时得到的,这两个应用程序都是asp.net core mvc 2.1
请求者
var pdf = _pdfService.CreatePdf(body);
string values = string.Format("pdfName={0}&pdfByte={1}", pdfName, Convert.ToBase64String(pdf));
StringContent content = new StringContent(values, Encoding.UTF8, "application/x-www-form-urlencoded");
using (var client = new HttpClient())
{
var result = await client.PostAsync("host", content);
if (result.IsSuccessStatusCode)
{
//do stuff
}
}
接收器
[HttpPost]
public IActionResult WritePdfToFile(string pdfByte, string pdfName)
{
try
{
System.IO.File.WriteAllBytes(Path.Combine(_environment.WebRootPath, pdfName),
Convert.FromBase64String(pdfByte));
return Ok(new { error = false });
}
catch (Exception ex)
{
_logger.LogError(ex, ex.Message);
return BadRequest(new { error = false, message = ex.Message });
}
}
此行引发异常
Convert.FromBase64String(pdfByte)
该输入不是有效的Base-64字符串,因为它包含非Base 64字符,两个以上的填充字符或填充字符中的非法字符。
我确认base64字符串有效,已经在在线base64验证程序工具上进行了验证,并通过正则表达式工具进行了检查。我没有将其粘贴到此处,因为它可能使帖子变得丑陋,可以找到 here
我研究了这些帖子以及其他所有类似内容,但是没有一个帮助很大。