2011-02-18 6 views
4

브라우저를 벗어난 Silverlight 프로그램에서 작업 중이며 OpenFileDialog를 사용하여 로컬 파일을 성공적으로 열었습니다. 그러나 이제는 자체 XAP (필요없는 찾아보기, 열 파일이 하드 코딩 됨) 내에서 파일을 열어야합니다. 이 코드를 사용하려고했으나 제대로 동작하지 않습니다 ".. 파일 작업이 경로 'Default.txt가'거부에 대한 액세스 할 수 없습니다"XAP에서 텍스트 파일의 텍스트를 읽는 방법?

using (StreamReader reader = new StreamReader("Default.txt")) 
{ 
    TextBox1.Text = reader.ReadToEnd(); 
} 

이 코드라는 SecurityException를 던졌습니다 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

9

코드가 사용자 파일 시스템의 어딘가에있는 "Default.txt"라는 파일을 열려고합니다. 정확히 어디에서 Silverlight 응용 프로그램이 실행되고 있는지에 따라 다릅니다. 예, 일반적으로 당신은 거기에 갈 수있는 허가를 가지고 있지 않습니다.

XAP에서 뭔가를 가져 오려면 스트림을 다르게 구성해야합니다. 다음 줄에 표시됩니다.

참고 : Default.txt는 '포함 된 리소스'가 아닌 '리소스'로 설정되어야합니다. '리소스'가되면 XAP에 추가됩니다. Embedded Resource가 어셈블리에이를 추가합니다.

상세 정보 : http://nerddawg.blogspot.com/2008/03/silverlight-2-demystifying-uri.html

참고 : 실버 라이트 프로그램이 열린 우리당 문자열의 "/ MyXap"부분이 자원을 포함하는 어셈블리의 이름을 참조 확인, 여러 어셈블리를 가지고 경우. 를 설정

new Uri("ProjectName.Screens;component/Path/To/Default.txt", UriKind.Relative)) 
+0

은 "리소스"가 지원되지 않습니다하기 위해서는 추가 : 당신은 두 개의 어셈블리 "ProjectName.Screens는"자원이 들어 "프로젝트 이름"과 "ProjectName.Screens을"이있는 경우 예를 들어, 다음을 사용 "url은"/Path/To/Default.txt "입니다. 제공된 링크가 올바르게 표시됩니다. – John

+0

첫 번째 슬래시를 제거하여 관리 할 수 ​​있으므로 경로가"Path /To/Default.txt " – Pashec

관련 문제