C# 如何序列化来自不同程序集的二进制数据?
我正在编写一个MVC4应用程序,它向客户端应用程序发送序列化数据 客户端代码 这是客户端的代码C# 如何序列化来自不同程序集的二进制数据?,c#,asp.net-mvc-4,exception,serialization,C#,Asp.net Mvc 4,Exception,Serialization,我正在编写一个MVC4应用程序,它向客户端应用程序发送序列化数据 客户端代码 这是客户端的代码 public static void GetMalicousExtensions(string User_ID, string UC, string Implementation_ID) { try { System.Diagnostics.Debug.WriteLine("GetMalExt Running"); //Call to MVC4 server. We
public static void GetMalicousExtensions(string User_ID, string UC, string Implementation_ID)
{
try
{
System.Diagnostics.Debug.WriteLine("GetMalExt Running");
//Call to MVC4 server.
WebRequest request = WebRequest.Create(string.Format("http://localhost:35555/Secure/SendExtensions?User_ID={0}&UC={1}&Implementation_ID={2}"
, User_ID
, UC
, Implementation_ID
));
System.Diagnostics.Debug.WriteLine("Request initialized.");
request.Method = "GET";
System.Diagnostics.Debug.WriteLine("Method set.");
request.Timeout = 10000;//10 seconds for debug, switch to 5 for release.
BinaryFormatter serializer = new BinaryFormatter();
System.Diagnostics.Debug.WriteLine("Serializer initialized.");
System.Diagnostics.Debug.WriteLine("Getting the stream.");
//The object of type BlockExtension is in a shared file.
BlockedExtension bTest = ((BlockedExtension)serializer.Deserialize(request.GetResponse().GetResponseStream(), null));
//request.
System.Diagnostics.Debug.WriteLine("GetMalExt de-serialized");
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Exception: " + ex.Message);
}
}
服务器端代码
任何帮助都会很好,谢谢。您可以包括对客户端项目的参考。这对我很有用你确定你能跨程序集使用它吗?如果是这样的话,我能看看你的代码结构的例子吗?
[HttpGet]
[ValidateInput(false)]
public ActionResult SendExtensions(Guid User_ID, string UC, string Implementation_ID)
{
System.Diagnostics.Debug.WriteLine("----Send Serialized Malicious Extensions----");
string ipAddress = Utility.GetIPAddress();
System.Diagnostics.Debug.WriteLine("IP: " + ipAddress);
string Country = GeoIPHelper.GetCountryCode(ipAddress);
System.Diagnostics.Debug.WriteLine("Country: " + GeoIPHelper.GetCountryCode(ipAddress));
System.Diagnostics.Debug.WriteLine("User ID: " + User_ID);
System.Diagnostics.Debug.WriteLine("User Class: " + UC);
System.Diagnostics.Debug.WriteLine("Implementation ID: " + Implementation_ID);
try
{
using (ValidationManager manager = new ValidationManager())
{
//Grab the users installed malicious applications. (Extensions + Programs)
List<CheckUserExtensionsResult> userExts = manager.CheckUserExtensions(User_ID);
System.Diagnostics.Debug.WriteLine("Got data from DB.");
//using (var stream = new StreamWriter(Request.InputStream))
{
//Convert the list into an object.
List<BlockedExtension> sList = ConvertToSerializableList(userExts);
BlockedExtension bTest = sList.First<BlockedExtension>();
System.Diagnostics.Debug.WriteLine("Converted to serializable list.");
//Serializer.
BinaryFormatter serializer = new BinaryFormatter();
System.Diagnostics.Debug.WriteLine("Set up serializer.");
//Send the serialized object.
System.Diagnostics.Debug.WriteLine("Sending data.");
//serializer.Serialize(Response.OutputStream, sList);
serializer.Serialize(Response.OutputStream, bTest);
System.Diagnostics.Debug.WriteLine("Data sent.");
}
}
}
catch (Exception ex)
{
_log.Error(ex.Message, ex);
}
return new EmptyResult();
}
using System;
using System.Runtime.Serialization;
namespace Installer.Helpers
{
[Serializable()]
public class BlockedExtension : ISerializable
{
string Extension_Name = "";
public BlockedExtension(string Extension_Name)
{
this.Extension_Name = Extension_Name;
}
public BlockedExtension(SerializationInfo info, StreamingContext ctxt)
{
}
public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
{
}
}
}