C# Asp.net core FromBody始终为空
朋友们好,我创建了Asp.net核心web服务,并将此web服务称为web应用程序。在此web api中,用户上载pdf和文档类型以及文件编号。 这是我的asp.net核心控制器C# Asp.net core FromBody始终为空,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,朋友们好,我创建了Asp.net核心web服务,并将此web服务称为web应用程序。在此web api中,用户上载pdf和文档类型以及文件编号。 这是我的asp.net核心控制器 [HttpPost ] [Route("v1/ReceiveNoteData")] public string ReceiveNoteData([FromBody] ReceiveNoteDataReq request) { return _IReceiveNoteData.Receive
[HttpPost ]
[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
若我只发送文件号和文档类型,那个么我从body中获取数据,但当我试图从body发送pdf数据时,数据为空
这就是我在web应用程序中调用web服务的方式
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 = "http://localhost:905/v1/ReceiveNoteData";
CookieContainer cookieJar = new CookieContainer();
HttpWebRequest webRequest = (HttpWebRequest)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从body调用此web服务时,如果我只发送文件号和文档类型,则总是获取NULL,但当我试图从body发送pdf数据时,总是获取NULL
如果您想将带有其他信息的pdf数据从请求主体发布到后端服务,可以参考以下示例
//...
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
string yourdata = System.Text.Json.JsonSerializer.Serialize(
new
{
DocType = doctype,
FileNumber = txtid.Text,
DocumentBody = base64String
});
writer.Write(yourdata);
writer.Close();
//...
可以帮助将数据绑定到字节[]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上载文件,并讨论了类似的要求,您可以参考它。这可能是序列化问题吗?您能尝试序列化您的请求并查看它是否有效吗?添加了属性,但使用nullUse Fiddler检查您的负载。确保您发送的是您认为要发送的内容。为什么不使用
FormData
上载文件,或者您可以尝试将public byte[]DocumentBody{get;set;}
更改为public ifformfile DocumentBody{get;set;}
@SabirHossain您有任何代码示例吗?您是救世主感谢您宝贵的时间终于起作用了:)祝您愉快:)编码愉快:)