2010-03-25 6 views
0

저는 Silverlight 개발에 익숙하지 않습니다. 이것이 클라이언트 측 기술이라는 것을 이해합니다. 따라서 패러다임은 기존 ASP.NET 개발과는 다릅니다. 그런데, 나는 내 서버 측 코드가 어디에 배치되는지 이해하지 못한다.Silverlight XML 데이터 소스를 찾을 수 없습니다.

실버 라이트 \ MVC 응용 프로그램이 있습니다. 내 'Models'폴더에서 XML 문서를 읽으려고합니다. 다음 코드 조각은 XML 문서 'Model'과 동일한 위치에있는 클래스 내에서 실행됩니다. load()는 SystemIOFileNotFound 예외를 발생시킵니다. 애플리케이션을 빌드 할 때 XML 문서가 웹 프로젝트 어셈블리와 같은 위치에 놓여 있지 않다는 것을 알게되었습니다. 이것이 이것이 Silverlight 프로젝트라는 사실에 국한된다고 가정합니다. 누군가 내가 놓친 걸 말해 줄 수 있니?

_xdoc = new XDocument(); 
    _xdoc = XDocument.Load(new Uri("videos.xml",UriKind.Relative).ToString()); 

편집 ..

난 후이다 동작은 시작 페이지 (실버) 서버 측 컨트롤러를 통해 제어를 채우는 것이다. 즉 로컬 호스트/비디오

답변

0

일반적인 ASP.net에서와 같이이 정적 리소스에 액세스하려고 시도하는 것이 문제였습니다. 그러나 현재 HTTPContext를 사용하여 파일 경로를 매핑해야한다는 것을 알게되었습니다 :

HttpContext.Current.Server.MapPath("~/App_Data/videos.xml"); 

위의 내용은 저에게 효과적입니다. 이 코드는 실버 프로젝트가 아닌 웹 프로젝트에 있기 때문에 상대 경로를 사용하여이 리소스에 액세스 할 수없는 이유는 아직 명확하지 않습니다. 이 코드는 웹 서버의 컨텍스트에서 실행됩니다. 즉

0

Silverlight는 파일 시스템에 액세스 할 수 없으므로 (고맙게도) 파일에 액세스 할 수 없습니다. 리소스로 포함 시키거나 실버 라이트가 제공하는 로컬 스토리지 API에 저장해보십시오.

0

Models 폴더가 Silverlight 프로젝트가 아닌 웹 프로젝트에 있다고 가정 할 때 귀하의 문제는 Silverlight와 관련이없는 것으로 보입니다. XML 파일을로드하는 코드는 파일이 현재 디렉토리에 있다고 가정하므로 배포 기술을 통해이를 보장해야합니다.

Silverlight 부분에서이 작업을 수행하는 경우 XML 파일을 포함 된 리소스에 저장하고 스트림 (Assembly.GetManifestResourceStream을 사용하여 가져 오기) 또는 리소스 (WPF가 아닌 포함 된 파일)로 액세스해야합니다 리소스)를 읽고 패키지 부분 구문을 사용하여 액세스하십시오.

+0

내 웹 프로젝트에 맞습니다. 그러나 위의 코드는 내 c : \ program files \ Microsoft Visual에서 XML 문서를 찾은 것 같습니다 ...... 이유는 무엇입니까? 실행중인 어셈블리가 아니기 때문에! – Nick

+0

VS와 함께 제공되는 웹 개발 서버를 사용하고 있습니까? – Timores

+0

예 .. 그렇습니다. 좋은 Silverlight \ MVC 자습서 또는 문서를 제안 할 수 있습니까? 무슨 일이 일어나고 있는지는 내 응용 프로그램의 시작 페이지가 Silverlight이며이 페이지에서 이동하려고하면 루트 컨텍스트가 다릅니다. 의미는 .. uri는 웹 서버가 아닌 실버 라이트 앱과 관련이 있습니다. – Nick

관련 문제