C# 二进制流';0';不包含有效的BinaryHeader。无效的流或对象版本更改
我知道这个问题是存在的,但它们对我没有帮助,我想把一个动作的文件发布到ConvertToVLV动作,然后返回一个被转换成字节[]的对象,现在当我想把它转换成对象时,我在ByteArrayObject方法中得到以下错误,当到达这一行Video obj=(Video)binForm.Deserialize(memStream)C# 二进制流';0';不包含有效的BinaryHeader。无效的流或对象版本更改,c#,C#,我知道这个问题是存在的,但它们对我没有帮助,我想把一个动作的文件发布到ConvertToVLV动作,然后返回一个被转换成字节[]的对象,现在当我想把它转换成对象时,我在ByteArrayObject方法中得到以下错误,当到达这一行Video obj=(Video)binForm.Deserialize(memStream) 二进制流“0”不包含有效的BinaryHeader。可能的原因是序列化和反序列化之间的无效流或对象版本更改。 此外,请告诉我ConvertToFLV操作中的contentTy
二进制流“0”不包含有效的BinaryHeader。可能的原因是序列化和反序列化之间的无效流或对象版本更改。
此外,请告诉我ConvertToFLV操作中的contentType是否正确
public ActionResult Index()
{
WebRequest request = WebRequest.Create("http://localhost:25220/home/ConvertToFLV");
request.Method = "POST";
string path = Request.MapPath("~") + "2.wmv";
byte[] byteArray = System.IO.File.ReadAllBytes(path);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
byte[] convertedBytes = new byte[(int)response.ContentLength];
dataStream.Read(convertedBytes, 0, (int)response.ContentLength);
var obj = ByteArrayToObject(convertedBytes);
dataStream.Close();
response.Close();
return View();
}
public FileResult ConvertToFLV(HttpPostedFileBase file)
{
Stream stream = HttpContext.Request.InputStream;
byte[] result = new byte[HttpContext.Request.ContentLength];
stream.Read(result, 0, HttpContext.Request.ContentLength);
Video video = new Video { FLV = result };
return File(ObjectToByteArray(video), "application/x-www-form-urlencoded");
}
private Object ByteArrayToObject(byte[] arrBytes)
{
MemoryStream memStream = new MemoryStream();
memStream.Position = 0;
BinaryFormatter binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
Video obj = (Video)binForm.Deserialize(memStream);
return obj;
}
private byte[] ObjectToByteArray(Video obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}