세션 상태 서버에 세션을 저장하고 있습니다. (inproc를 저장하면 작동하지 않습니다.)세션에서 linq-to-sql 객체 또는 대체 솔루션을 저장하십시오.
Visual Studio (2010)에 내장 된 linq-to-sql 디자이너가 생성 한 클래스를 사용하여 객체가 내 웹 사이트에 일부 데이터를 저장하고 표현하도록합니다. .
경우에 따라 이러한 개체 중 일부를 다른 웹 페이지에서 액세스 할 수 있도록 세션에 추가하려고합니다.
문제는 내가 할 때 linq-to-SQL 항목의 일부가 직렬화되지 않는다는 오류가 발생한다는 것입니다.
나는 그것이 의미하는 바에 상관없이 datacontext "serialization mode"를 "unidirectional"으로 설정했습니다.
그런 다음 linq.xelement 필드로 변환 된 일부 sql-xmldata 필드를 일부 xml이 포함 된 기본 문자열로 대체하여 직렬화가 가능한 대체 객체를 만들었습니다. 그런 다음 객체에는 기본 유형 만 포함됩니다.
아직도 오류가 있습니다.
은 그 때 나는 바이트를 얻기 위해 DataContractJsonSerializer를 사용하여 시도 [] 나는 세션에 투입 할 수있는 :
byte[] buf = null;
var ds = new DataContractJsonSerializer(fi.GetType());
using (var ms = new MemoryStream())
{
using (var w = JsonReaderWriterFactory.CreateJsonWriter(ms))
{
ds.WriteObject(w, fi);
ms3.Position = 0;
buf = ms.ToArray();
}
}
return buf;
여기에서의 문제를 JSON 문자열이 일부의 중간에 끊어 질 것이다 요소이므로 나중에 비 직렬화 할 수 없습니다. XmlWriter를 사용하여 시도했을 때 어떤 이유로 약 43000 바이트의 XML 텍스트를 잘라내는 문제가있었습니다.
이것은 꽤 엉망이되고 있습니다.
더 좋은 방법이있을 것입니다.
하나의 아이디어는 단순히 임시 SQL Server 테이블에 개체를 제출하고, SQL Server 행에서 GUID를 가져오고, 개체의 전체 집합 대신 세션에 GUID를 저장 한 다음에서 데이터를 다시 읽는 것입니다. 다른 페이지의 SQL 서버.
실제로 더 효과적인 해결책은 무엇입니까?
이 내가 생각 문제를 해결 한 것이다. 감사. – tomsv