2010-05-06 6 views
3

내 실버 라이트 프로젝트의 디렉토리 구조는 다음과 같다 :실버 : 웹 클라이언트와 로컬 파일을 다운로드

\Bin 
- MainModule.xap 
- \Images 
--- Image1.png 
--- Image2.png 
- \Modules 
--- SubModule.xap 

내가 직접하거나 웹 서버를 통해 또는 Visual Studio를 통해 실행할 수 있어야합니다 (디버깅 목적은 다운로드를 우회하기를 원함). 내 미디어 로딩 코드에서

나는 다음과 같이 수행

if (runningLocally) 
{ 
    var bitmapImage = new BitmapImage(); 
    bitmapImage.UriSource = new Uri("Images/Image1.png", UriKind.Relative); 
    var image = new Image(); 
    image.Source = bitmapImage; 
} 
else 
{ 
    WebClient wc = new WebClient(); 
    wc.OpenReadCompleted += (s, e) => 
    { 
     var bitmapImage = new BitmapImage(); 
     bitmapImage.SetSource(e.Result); 
     var image = new Image(); 
     image.Source = bitmapImage; 
    }; 
    wc.OpenReadAsync(new Uri("Images/Image1.png", UriKind.Relative)); 
} 

이 이미지 작동을하지만, 나는 또한 단지 주택 UserControl의 회합이있는 하위 모듈이 있습니다. Silverlight에는 디스크를 읽을 수있는 기능이 없기 때문에 로컬에서 실행 중인지 여부에 관계없이 XAP을 "다운로드"해야한다는 사실에 자신을 사퇴했습니다.

System.Net.WebException: An exception occurred during a WebClient request. ---> System.NotSupportedException: The URI prefix is not recognized. 

실행할 때 내 서브 모듈의 라이트 XAP을 얻을 수있는 방법 (그렇지 않으면 웹 클라이언트 또는) 거기 : 나는 로컬 프로젝트를 실행하고 나는 예외를 얻을 XAP을 다운로드 할 WebClient를 사용하려고하면 문제이다 실버 라이트 프로젝트는 웹 서버를 직접 타격하지 않고 직접 할 수 있습니까?

편집 :

나는 또한 DeploymentCatalog와 MEF를 사용하여 시도하고 나는 예외를하지 않는 동안, 아무것도 이제까지 내가에만이 같은 문제가 가정 할 수 작곡없는 얘기를 깜빡 했네요.

답변

0

내 디자인은 실버 라이트에서 허용되지 않습니다 로컬 디스크 파일을 액세스하려고했습니다. Visual Studio에서 디스크에서 Silverlight 응용 프로그램을 실행할 수있는 이유에 대한 좋은 대답이 아직 없습니다. 그러나 이미지/비디오/오디오를 디스크에서 성공적으로 읽을 수는 있습니다.

0

서버에서 동일한 파일을 계속해서 (디버깅하는 동안) 다운로드하지 않으려면 WebClient를 사용하여 한 번 서버에서 다운로드 한 다음 IsolatedStorage에 저장하십시오. 당신을 얻을 것이다

다음 코드는 시작 :

// read/write from/to IsolatedStorage 
IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForSite.OpenFile 
관련 문제