C# 在ASP.NET MVC中发布和读取二进制数据

C# 在ASP.NET MVC中发布和读取二进制数据,c#,asp.net-mvc,binary,http-post,C#,Asp.net Mvc,Binary,Http Post,我在通过HttpWebRequest将二进制数据发布到服务器时遇到问题。这是我的客户代码: var request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; request.UserAgent = RequestUserAgent; request.ContentType = "application/x-www-form-urlencoded"; var responseStr = ""; var da

我在通过
HttpWebRequest
将二进制数据发布到服务器时遇到问题。这是我的客户代码:

var request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "POST";
request.UserAgent = RequestUserAgent;
request.ContentType = "application/x-www-form-urlencoded";
var responseStr = "";
var dataStr = Convert.ToBase64String(data);
var postData = Encoding.UTF8.GetBytes(
string.Format("uploadid={0}&chunknum={1}&data={2}", uploadId, chunkNum, dataStr));
using (var dataStream = request.GetRequestStream())
{
    dataStream.Write(postData, 0, postData.Length);
    dataStream.Close();
}
然后我想通过MVC控制器处理请求,这是它的签名:

public ActionResult UploadChunk(Guid? uploadID, int? chunkNum, byte[] data)

但是我这里有个错误,说数据不是Base64编码数组,我做错了什么?

您需要通过调用
Uri.EscapeDataString
来转义Base64中的
+
字符。确切的异常消息和堆栈跟踪是什么?下面是堆栈跟踪部分of System.Convert.FromBase64String(字符串s)of System.Web.Mvc.ByteArrayModelBinder.BindModel(ControllerContextexception消息已本地化