C# 如何序列化来自不同程序集的二进制数据?

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

我正在编写一个MVC4应用程序,它向客户端应用程序发送序列化数据

客户端代码 这是客户端的代码

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)
    {

    }
}
}