2010-07-28 6 views
2

내 ASP.NET 웹 사이트에 Silverlight 응용 프로그램을 추가했습니다. Visual Studio는 새로운 Silverlight 프로젝트를 만들고 내 웹 사이트 프로젝트의 ClientBin 폴더에 xap을 추가했습니다. 그래서이 두 프로젝트는 하나의 솔루션 아래 있습니다.Silverlight Asp.Net 프로젝트 통합

내 Silverlight 앱이 xml 파일을 읽어야하는데 웹 사이트 프로젝트의 클라이언트 bin 폴더에서 파일에 액세스 할 수 없었습니다. 해당 프로젝트에 대한 참조 추가는 다른 Silverlight 응용 프로그램에 대한 참조 만 추가 할 수 있기 때문에 작동하지 않습니다. 지금은 파일이 실버 라이트 프로젝트 아래에있을 때 작동하지만 웹 사이트 프로젝트에서는 그렇지 않습니다.

어떻게 웹 사이트 프로젝트에서 파일을 읽을 수 있습니까?

프로젝트 구조는

WEBSITE1 (solution) 
-WEBSITE1 (project) 
    -ClientBin 
    -file0.xml 
    -silverlightchart.xap 
-SilverlightChart 
    -file1.xml 

내가

XDocument document = XDocument.Load("file1.xml"); 

내가 file0.xml에 액세스하려면 사용 file1.xml에 액세스 할 수 있습니다 있지만 경로는, 예를 들어, 나를 위해 작동하지

XDocument document = XDocument.Load("~/ClientBin/file0.xml"); 

및 WEBSITE1은 시작 프로젝트

+0

경우 xml 파일에 액세스하는 데 사용하는 코드를 게시하시기 바랍니다. – AnthonyWJones

답변

0

특별한 작업 없이도 간단하게 ClientBin 폴더에서 파일을 읽을 수 있어야합니다. 추측 하건데, 실수로 Silverlight 응용 프로그램을 시작 프로젝트로 설정했다고합니다. 이 시나리오에서는 웹 사이트를 시작 프로젝트로 설정하고 Silverlight 응용 프로그램 테스트 페이지를 시작 페이지로 표시하거나 브라우저가 시작된 후 실버 페이지로 이동합니다.

편집

당신이 가진 문제는 Load 방법은 동기하지만 실버 라이트는 웹 자원에 대한 동기 액세스를 지원하지 않는다는 것입니다. 따라서 Uri를 Load 메서드에 전달하는 것은 해당 Uri이 Xap의 내용으로 충족 될 수있는 경우에만 작동합니다. 이유는 Silverlight 프로젝트의 Xml 파일이 Xap에서 끝나기 때문에 작동합니다.

는이 작업을 수행 할 필요가 사이트에서 XML을 가져올 수 : -

아래에있는 내 asnswer 도움이되지
WebClient client = new WebClient(); 
client.DownloadStringCompleted += (s, args) => 
{ 
    XDocument document = XDocument.Load(args.result); 
    SomeFunctionToContinueWithDocumentProcess(document); 
} 
client.DownloadStringAsync(new Uri("file0.xml", UriKind.Relative); 
// code exits here but _document won't be loaded yet 
+0

사용합니다. XDocument document = XDocument.Load ("chart.xml"); silverlight 프로젝트에 chart.xml 파일이있는 경우. 다른 프로젝트 clientbin에서 파일에 액세스하기위한 경로는 무엇입니까? 감사합니다 – anon2

+0

@ anon2 : 내 편집을 참조하십시오 – AnthonyWJones

+0

고맙습니다. Anthony, 지금 다른 해결책이 효과가있는 것 같습니다. 실패하면 내가 언급 한 방식대로 시도해 보겠습니다. file0.xml을 SilverlightChart에 링크 (기존 항목 추가> 추가 단추 "링크로 추가"드롭 다운)로 추가했습니다. 프로젝트 폴더를 변경하면 링크가 동적으로 업데이트되는 것 같습니다. 이론적으로는 이것이 작동해야합니다. – anon2