簡體   English   中英

Asp.net 核心 FromBody 總是得到 NULL

[英]Asp.net core FromBody always getting NULL

您好朋友,我創建了 Asp.net 核心 web 服務並調用此 web 服務表單 Z2567A5EC9705EB7AC2CZ8403 應用程序。 在此 web api 用戶上傳 pdf 和文檔類型和文件號。 這是我的 asp.net 核心 controller

[HttpPost ]
[Route("v1/ReceiveNoteData")]
public string   ReceiveNoteData([FromBody] ReceiveNoteDataReq request)
{
   return _IReceiveNoteData.ReceiveNoteDataResponse(request);        
}

ReceiveNoteDataReq class

public class ReceiveNoteDataReq
{
    public byte[] DocumentBody { get; set; }
    public string DocType { get; set; }
    public string FileNumber { get; set; }
}

when i am trying to call this web service using webrequest on service side frombody always getting NULL if i am sending only file number and doc type i am getting data in from body but when i am trying to send pdf data from body getting NULL.

這就是我在我的 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();
}

提前致謝。

when i am trying to call this web service using webrequest on service side frombody always getting NULL if i am sending only file number and doc type i am getting data in from body but when i am trying to send pdf data from body getting 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();

//...

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 上傳文件,這個SO線程討論了類似的需求,您可以參考它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM