2010-11-18 6 views
1

Visual Studio에서 작업중인 Silverlight 4/C# 프로젝트가 있습니다. 프로젝트 >> 새 항목 추가 >> XML 파일을 마우스 오른쪽 버튼으로 클릭하여 XML 데이터 파일을 만들었습니다. 다음 파일을 열려고 :Silverlight의 파일 권한 문제

 StreamReader streamReader = new StreamReader("data.xml"); 

그러나 이것은 보안 예외를 제공합니다. 이 문제를 어떻게 해결할 수 있습니까? 아니면 필요한 권한을 부여 할 수 있습니까?

답변

1

StreamReader의 해당 생성자는 로컬 파일 시스템으로의 파일 경로를 예상하고 있습니다.이 파일 경로는 상승 된 신뢰로 브라우저에서만 사용할 수 있습니다. 당신이 Application.GetResourceStream를 사용한다 대신

: - 당신은 정말 그냥 XDocument이 원하는 기대하지만

Stream stream = Application.GetResourceStream(new Uri("data.xml", UriKind.Relative)); 
StreamReader reader = new StreamReader(stream); 

, 당신이 위해 StreamReader 단계 우회 - BTW

XDocument doc = XDocument.Load(stream); 

을, 나는 개인적 것 XML을 어셈블리에 포함시키기보다는 Xap에 Content로 둡니다.

2

실행 시간에 파일을 읽을 수 있어야합니까? 그렇다면 Visual Studio에서 리소스 빌드 작업을 설정하고 Assembly.GetManifestResourceStream을 사용하여 리소스를 열도록 설정하는 것이 좋습니다. 이것이 응용 프로그램 IMO에 읽기 전용 데이터를 묶는 가장 간단한 방법입니다.

+0

아래 주석을 참조하십시오. SL은 MSDN –

+0

에 기반한 포함 리소스 참조를 따르지 않습니다. @Aaron : 감사합니다. –

2

Silverlight는 기본적으로 로컬 파일 시스템 액세스를 허용하지 않습니다. 선택할 수있는 옵션은 다음과 같습니다.

데이터를 일반적으로 저장해야하는 경우 가능하면 IsolatedStorage를 사용하십시오.

+0

-1 OP는 의도적으로 로컬 디스크에서 읽으려고하지 않고 리소스 대신 격리 된 스토리지 및 승격 된 사용 권한 참조가 필요하지 않으며 Skeet의 게시 참조를 통해 SL –

2

리소스으로 표시하고 포함 리소스가 아닌 항목으로 표시해야합니다. MSDN에서

...

가 빌드 작업 드롭 다운 목록에서 여러 가지 다른 값을 제공합니다 Visual Studio에서 속성 창. 그러나 Silverlight 프로젝트에서는 이전 세 개의 값만 사용할 수 있습니다. 특히 에서는 Silverlight가 빌드 작업을 사용해야하며 리소스 빌드 작업은 사용하지 않습니다. 형식을 사용하며 Silverlight는 을 인식 할 수 없습니다.

성취하려는 것을 수반하는 위대한 걸음 걸이는 here입니다. 디스크의 파일에 액세스하려고하지는 않지만 리소스로서 이것은 문제가되지 않습니다. 격리 된 저장소 또는 상승 된 권한이 여기에 적합합니다.

+0

Hmm에 대해 유효하지 않은 임베디드 리소스가됩니다. .. 이상하다. WP7에서 작동합니다. SL에 대한 모든 직접적인 경험이 있습니다. SL4에서도 여전히 깨져 있습니까? –

+0

@ 존 SL4에서 시도한 적은 없지만 SL의 다른 버전은 ... 지금은 문서에서 벗어날 수 있습니다 ... –