웹 팜을 사용하도록 ASP.NET 응용 프로그램을 변경하려고합니다. 이렇게하려면 세션 상태를 in-proc에서 State Server로 변경해야합니다. 이렇게하려면 사용되는 클래스를 직렬화 가능으로 표시해야한다는 것이 제 이해입니다. 그것이 수업에서 가능한지 어떻게 알 수 있습니까? 컴파일이 불가능할 경우 컴파일시 오류가 발생합니까?어떤 클래스가 직렬화 가능인지 판단하는 방법
답변
클래스가 직렬화 가능 여부를 확인하는 방법에 대한 첫 번째 질문에 대한 답변은 다음 설명을 참조하십시오. How to check if an object is serializable in C#
불행히도 .net은 내가 직렬화되어야한다고 생각하는 객체를 직렬화하려고 시도 할 때 기괴한 행동으로 나를 놀라게했습니다.
예를 들어, 내 WCF 프로젝트에서 일련 번호를 지정하고 DataSet
개체를 전송할 수 있습니다. 그러나 개체를 serialize하고 DataTable
개체를 전송하려고하면 빈 DataTable
으로 끝납니다. 그 하나를 추적하는 데 시간이 좀 걸렸습니다.
따라서 사용자 지정 클래스를 serialize 할 때 어떤 일이 발생하는지 최소한의 기초적인 테스트를 수행하는 것이 좋습니다.
이것은 답변이 아닙니다. 의견입니다. – ChrisF
컴파일 타임에 개체를 serialize해야하는지 여부를 알 수 없으므로 컴파일 타임 예외가 발생하지 않습니다. IIS가 개체를 serialize하려고하면 SerializationException
이 표시됩니다.
직렬화 및 직렬화를 시도하는 짧은 스 니펫을 작성할 수 있습니다 ... BinaryFormatter
을 사용하여 직렬화하고 쓰기 위해 FileStream
을 사용하십시오.
기존 클래스가 ISerializable
을 구현하는지 알려주는 ObjectBrowser입니다. 직렬화 할 객체를 찾고 있다면 클래스가 직렬화되도록하려면 클래스가 실제로 직렬화를 위해 설계되어야한다는 것을 명심하십시오. 그렇지 않으면 문제가 있습니다. 예를 들어, MSDN 도움말에서 :
개체가 deserialize되는 순서는 보장 할 수 없습니다. 예를 들어, 한 형식이 아직 deserialize되지 않은 형식을 참조하는 경우 예외가 발생합니다. 그냥 내가 함께 직렬화있어
Exception
교체 ... 여기 직렬화 및 역 직렬화의 간단한 예는 다음과 같습니다 http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx
편집 :
ISerializable
에서 읽어 보시기 바랍니다
는 ... 여기 링크입니다 자신의 제품 :
BinaryFormatter formatter = new BinaryFormatter();
Exception serializedException = new Exception("Testing serialization");
Exception deserializedException;
using (FileStream fileStream = new FileStream(@"C:\SerializationTest.txt", FileMode.CreateNew)) {
formatter.Serialize(fileStream, serializedException);
}
using (FileStream readStream = new FileStream(@"C:\SerializationTest.txt", FileMode.Open)) {
deserializedException = formatter.Deserialize(readStream) as Exception;
}
if (deserializedException != null) {
throw deserializedException;
}
정보를 제공해 주셔서 감사합니다. 어쨌든 BinaryFormatter 및 FileStream을 참조하고있는 것을 보여주는 빠른 코드 스 니핏을 볼 수 있습니까? – user31673
예제 코드가 추가되었습니다. 도움이 되었습니까? –
- 1. 문자열을 판단하는 알고리즘이 있습니까?
- 2. Windows 박쥐 스크립트 : 파일이 존재하는지 판단하는 방법?
- 3. 서버 클라이언트에서 편집 된 페이지를 판단하는 방법
- 4. 어떤 클래스가 인스턴스화 될 것입니까
- 5. 어떤 클래스가 메서드를 호출했는지 확인하십시오.
- 6. 창을 판단하는 방법은?
- 7. 직렬화 패턴으로 해결할 수없는 직렬화 프록시 패턴은 어떤 문제점을 해결합니까?
- 8. 어떤 하위 클래스가 필요한지 결정하는 가장 좋은 방법
- 9. 웹 페이지가 웹 사이트에서 오는 것인지를 효율적으로 판단하는 방법
- 10. 클래스가 인스턴스화되었는지 확인하는 방법
- 11. .NET에 직렬화 가능한 일반 키/값 쌍 클래스가 있습니까?
- 12. 의미 : 직렬화 가능 클래스가 static final serialVersionUID 필드를 선언하지 않습니까?
- 13. 자바에서 직렬화 구현하는 방법
- 14. 웹 사이트를 ColdFusion에서 .NET으로 마이그레이션하는 작업을 판단하는 방법
- 15. Xml 직렬화/직렬화 해제 문제
- 16. 직렬화/직렬화 해제 가능
- 17. 이 클래스가 실제로 주석으로 직렬화 된 것으로 표시된 동안 직렬화 된 오류로 표시되지 않았습니다.
- 18. C++에서의 XML 직렬화/직렬화
- 19. 어떤 명령이 어떤 명령을 실행했는지 확인하는 방법
- 20. 일반적인 손으로 구르는 인터페이스의 직렬화/역 직렬화 방법
- 21. .NET의 직렬화 - Android의 직렬화 해제
- 22. :: 직렬화 MPI는
- 23. 나는이처럼 보이는 클래스가 json.net
- 24. 지향 비순환 그래프의 강도를 판단하는 방법은 무엇입니까?
- 25. 재능을 판단하는 중 - 한 사람은 여름을 삼켜도됩니까?
- 26. URL이 이미 encodeURI로 인코딩되었는지 판단하는 방법은 무엇입니까?
- 27. 거래가 성공했는지 실패했는지 판단하는 방법은 무엇입니까?
- 28. web.config가 변경되어 다시로드해야하는지 판단하는 기준은 무엇입니까?
- 29. Java의 수동 객체 직렬화
- 30. Main() 클래스가 호출되고 있습니까? 방법?
의 중복 가능성 [객체가 C#으로 직렬화 있는지 확인하는 방법] (http://stackoverflow.com/questions/81674/how-to-check-if-an-object- is-serializable -in-c) – ChrisF
가능한 복제본입니다. 그러나 원래 포스터는 직렬화 할 수없는 것을 직렬화하려고하면 어떤 일이 발생하는지 알고 싶어합니다. –
도움이되는 답변을 골라 낼 수 있습니까? 아니면 다른 답을 찾았습니까? 답변을 게시하고 답변으로 표시 할 수 있습니까? 감사! –