2015-02-03 2 views
0

나는 소켓으로의 HttpWebRequest를 보내려고하고 나는 그것을 직렬화 할 때, 나는이 예외가 형식 'System.Runtime.Serialization.SerializationException'의 처리되지 않은 예외가 mscorlib에 발생 직렬화 HttpWebRequest를

. dll 추가 정보 : 어셈블리 'System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'의 'System.Net.WebRequest + WebProxyWrapper'형식이 serializable로 표시되어 있지 않습니다. 내가 직렬화 나의 클래스를 설정하고()하지만이 작동하지 않는

abstract class Serializ 
{ 
    #region Filds 
    static MemoryStream ms = null; 
    static BinaryFormatter formatter = null; 
    #endregion 
    #region Methods 
    public static byte [] seryaliz(object obj) 
    { 
     ms = new MemoryStream(); 
     formatter = new BinaryFormatter(); 
     formatter.Serialize(ms, obj); 
     ms.Position = 0; 
     String tmp = null; 
     StreamReader sr = new StreamReader(ms); 
     tmp = sr.ReadToEnd(); 
     ms.Position = 0; 
     sr.Close(); 
     ms.Close(); 
     return Encoding.ASCII.GetBytes(tmp); 
    } 
    public static object DEseryaliz(byte [] Data) 
    { 
     object obj = new object(); 
     formatter = new BinaryFormatter(); 
     ms = new MemoryStream(Data); 
     ms.Position = 0; 
     obj=(object)formatter.Deserialize(ms); 
     ms.Close(); 
     return obj; 

    } 
    #endregion 
} 

:

[Serializable()] 

class BROWSER 
{ 
    HttpListener Response = null; 
    HttpListenerContext context = null; 
    HttpListenerRequest request = null; 
    HttpListenerResponse response = null; 
    public HttpWebRequest Webrequest = null; 
    public WebResponse Webresponce = null; 
    string responseString = null; 
    //when my Webrequest is ready ... 
     public void SendToProxyServer(HttpWebRequest Webrequest) 
    { 
     byte[] SndData; 
     S_RSocket sock = new S_RSocket(); 
     SndData = Serializ.seryaliz(this.Webrequest); 
     sock.Send(SndData); 
     this.responseString = sock.res; 

    } 

내 직렬화 클래스 :

내 코드입니다.

어디에 문제가 있습니까?

답변

1

HttpWebRequest 또는 해당 속성이 Serializable 특성을 가지고 있지 않으므로 직렬화 할 수 없으므로 HttpWebRequest를 직렬화 할 수 없습니다. 이 경우 HttpWebRequest 내부의 속성입니다. 직렬화를 수행중인 클래스에 Serializable을 추가해도 아무 것도 할 수 없습니다.

1

어디에 문제가 있습니까?

문제는 완벽 예외에 설명되어 있습니다 :

총회에서

유형 'System.Net.WebRequest + WebProxyWrapper' '시스템, 버전 = 4.0.0.0, 문화 = 중립, PublicKeyToken = b77a5c561934e089' 직렬화 가능으로 표시되어 있지 않습니다.

은이 유형의 인스턴스가 직렬화 될 수 있다는 것을 나타 내기 위해 유형으로 SerializableAttribute 특성을 적용을 SerializableAttribute Remarks

당이 될 수 actualy을 의미하지 않는다 [Serializable()]로 뭔가를 표시해서. 직렬화되는 개체의 그래프에 유형에 SerializableAttribute 특성이 적용되지 않은 경우 공용 언어 런타임에서 SerializationException을 throw합니다. 귀하의 필드 또는 속성의

하나는 내부적으로 직렬화로 표시되지 않은 클래스 WebProxyWrapper이있는 WebRequest을 사용하고 있습니다. 따라서 필드 또는 속성 중 하나가 WebProxyWrapper을 사용하기 때문에 WebRequest를 serialize 할 수 없습니다.