2014-10-17 1 views
0

강력한 형식의 클래스로 deserialize하려는 XML 문자열이 있습니다. 아래 코드는 샌드 박스 플러그인에 넣을 때까지 훌륭하게 작동합니다.이 플러그 인에서는, StringReader 클래스를 사용하기 때문에 FileIOPermissions 오류가 발생합니다. StringReader를 사용하지 않고 역 직렬화하려고 시도하는 데 문제가 있습니다. 누구든지 좋은 대안이 있습니까? 내 ViewSecurityConfiguration 클래스는 IDictionary를 활용하기 때문에CRM 2013 : 샌드 박스가있는 플러그인 내에서 비 ​​직렬화

byte[] binary = Convert.FromBase64String(configurationWebResource.Attributes["content"].ToString()); 
resourceContent = UnicodeEncoding.UTF8.GetString(binary); 

XmlSerializer serializer = new XmlSerializer(typeof(ViewSecurityConfiguration)); 

using (StringReader reader = new StringReader(resourceContent)) 
{ 
    currentViewSecurityConfiguration = (ViewSecurityConfiguration)serializer.Deserialize(reader); 
} 

답변

0

내가 샌드 박스 플러그인에 성공적으로 실행 한 다음을 시도하십시오. XmlSerializer를 사용하기 위해 구현을 다시 작성하는 대신 사용자 지정 제네릭 Xml Serializing 클래스를 찾거나 작성합니다. 그럼에도 불구하고 이것이 개발자가 일반적으로 샌드 박스 플러그인 내에서 역 직렬화하는 방법을 보여주기 때문에 이것이 본질적으로 내 질문에 대한 답이라고 생각합니다.
+0

불행하게도 내가 XmlSerializer 클래스를 사용할 수 없습니다

byte[] binary = Convert.FromBase64String(configurationWebResource.Attributes["content"].ToString()); resourceContent = UnicodeEncoding.UTF8.GetString(binary); DataContractSerializer serializer = new DataContractSerializer(typeof(ViewSecurityConfiguration)); using (StringReader reader = new StringReader(resourceContent)) { using (XmlTextReader xmlReader = new XmlTextReader(reader)) { if (serializer.IsStartObject(xmlReader)) //Throws FileIOPermissions error { currentViewSecurityConfiguration = (ViewSecurityConfiguration)(serializer.ReadObject(xmlReader)); } } } 
Zach