大佬教程收集整理的这篇文章主要介绍了Asp.net 核心 FromBody 总是为 NULL,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
朋友们好,我已经创建了 Asp.net 核心 Web 服务并从 Web 应用程序调用了这个 Web 服务。在这个 web API 用户上传 pdf 和文档类型和文件编号。 这是我的 asp.net 核心控制器
[@R_489_10107@Post ]
[Route("v1/ReceiveNoteData")]
public String ReceiveNoteData([FromBody] ReceiveNoteDataReq request)
{
return _IReceiveNoteData.ReceiveNoteDataResponse(request);
}
ReceiveNoteDataReq 类
public class ReceiveNoteDataReq
{
public byte[] documentBody { get; set; }
public String DOCTYPE { get; set; }
public String filenumber { get; set; }
}
当我尝试在服务端使用 webrequest 调用此 Web 服务时 frombody 总是为 NulL 如果我只发送文件号和文档类型,我会从正文中获取数据,但是当我尝试从正文中发送 pdf 数据时,会得到 NulL。
这就是我在我的网络应用程序中调用网络服务的方式。
ReceiveNoteDataReq req = new ReceiveNoteDataReq()
req.documentBody = bytes;// pdf byte data
req.filenumber = txtID.Text;
req.DOCTYPE = DOCTYPE;
servicePointManager.Expect100ConTinue = true;
servicePointManager.SecurityProtocol = (SecurityProtocolTypE)3072;
String url = "@R_489_10107@://localhost:905/v1/ReceiveNoteData";
cookieContainer cookieJar = new cookieContainer();
@R_489_10107@Webrequest webrequest = (@R_489_10107@Webrequest)Webrequest.Create(url);
webrequest.Method = "POST";
webrequest.ContentType = "application/Json";
webrequest.MediaType = "application/Json";
webrequest.Accept = "application/Json";
webrequest.cookieContainer = cookieJar;
webrequest.KeepAlive = true;
webrequest.UserAgent = @"Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/51.0.2704.106 Safari/537.36";
webrequest.Credentials = CredentialCache.DefaultCredentials;
StreamWriter writer = new StreamWriter(webrequest.GetrequestStream());
JavaScriptserializer Jss = new JavaScriptserializer();
String yourdata = Jss.serialize(req); // here i am converTing class to Json String.
writer.Write(yourdata);
writer.Close();
var myWebResponse = webrequest.GetResponse();
var responseStream = myWebResponse.GetResponseStream();
if (responseStream != null)
{
var myStreamReader = new StreamReader(responseStream,EnCoding.Default);
result = myStreamReader.ReadToEnd();
}
提前致谢。
当我尝试在服务端使用 webrequest 调用此 Web 服务时,如果我只发送文件号和文档类型,则 frombody 总是获取 NULL 我正在从 body 获取数据但是当我尝试从 body 发送 pdf 数据时空。
如果您想将带有其他信息的 pdf 数据从请求正文发布到您的后端服务,您可以参考以下示例。
//...
String base64String = Convert.ToBase64String(bytes,bytes.Length);
String yourdata = System.Text.json.Jsonserializer.serialize(
new
{
DocType = doctype,Filenumber = txtid.Text,DocumentBody = base64String
});
writer.Write(yourdata);
writer.Close();
//...
ByteArraymodelBinder 可以帮助将数据很好地绑定到 byte[] DocumentBody
属性。
public class ReceiveNoteDataReq
{
[ModelBinder(BinderType = typeof(ByteArraymodelBinder))]
public byte[] DocumentBody { get; set; }
public String DocType { get; set; }
public String Filenumber { get; set; }
}
测试结果
另外,正如@SabirHossain 提到的,您可以尝试修改您的代码以通过FormData上传文件,并且this SO thread讨论了类似的要求,您可以参考。
以上是大佬教程为你收集整理的Asp.net 核心 FromBody 总是为 NULL全部内容,希望文章能够帮你解决Asp.net 核心 FromBody 总是为 NULL所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。