2012-06-30 2 views
0

저는 회사 웹 사이트 용 Silverlight 응용 프로그램을 개발 중이며 문제가 발생했습니다.C# Silverlight - XmlDictionary from Uri

지금까지이 프로그램을 로컬에서 프로그래밍 했으므로 이제 웹 사이트에 프로그램을 게시해야합니다. 문제는 FileStream이 상승 된 권한으로 만 로컬 파일에 액세스 할 수 있다는 것입니다.

여기에 코드 조각입니다 :

using (FileStream fileStream = new FileStream(@"E:\Users\LUPUS\Documents\Visual Studio 2010\Projects\Lycaon5\Lycaon5\acids.xdb", FileMode.Open)) 
{ 
using (XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fileStream, XmlDictionaryReaderQuotas.Max)) 
    { 
    //Read the XML file out. 
    } 
} 

XmlDictionaryReader 리더와 아무 변경하지 않고는 - 어떻게 상대 URI에서 파일을 읽기에 대해 갈 수 있을까?

많은 감사,

Rob.

p.s. 형식화의 부족에 대한 사과, 나 동굴 사람, 나 어떻게 몰라.

+1

다음 번으로 : [형식을 지정하는 방법] – Adam

답변

1

컴파일 할 때 파일을 어셈블리에 포함하십시오. 그런 다음 리소스 스트림으로 읽을 수 : http://msdn.microsoft.com/en-us/library/cc296240%28VS.95%29.aspx

(당신이 일을이 방법에 대한 유형 Resource 같은 파일을 포함해야합니다)

귀하의 코드 파일 스트림을 얻기 위해 다음과 같이 보일 수 있습니다

Uri uri = new Uri("/MyAssemblyName;component/acids.xdb", UriKind.Relative); 
StreamResourceInfo streamInfo = Application.GetResourceStream(uri); 
Stream fileStream = streamInfo.Stream; 

using (XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(fileStream, XmlDictionaryReaderQuotas.Max)) 
{ 
    //Read the XML file out. 
} 

EDIT : Tim S가 지적했듯이 이것은 데이터 파일이 정적이며 고정 시간으로 컴파일되었을 때만 유용합니다. 그렇지 않으면 다른 방법을 사용하여 웹 사이트에서 파일을 다운로드 할 수 있습니다 (링크 된대로).

+1

XmlDictionary가 매우 정적 인 경우 좋을 것입니다. 좀 더 쉽게 업데이트 할 수 있다면 http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/reading-files-asynchronously-using-webclient-class-in-news와 같은 WebClient를 사용하여 URL에서 읽을 수 있습니다. silverlight/ –

+0

'새 StreamResourceInfo (uri)'생성자가 존재하지 않습니다. http://msdn.microsoft.com/en-us/library/ms602802(v=vs.95). 'Application.GetResourceStream (uri)'을 의미 했습니까? http://msdn.microsoft.com/en-us/library/ms596994(v=vs.95) –

+0

@TimS. 응, 그랬어. 이것이 복사/붙여 넣기 기능을 사용하여 코드 부분을 편집하는 방법입니다. 나는 항상 뭔가를 그리워하고있다. ><감사합니다! –