2009-07-24 1 views
2

Silverlight 응용 프로그램에서 응용 프로그램이 호스팅되는 웹 사이트에 연결해야하는 경우가 있습니다. 나는 다음과 같은 코드를 사용하여 내 Silverlight 응용 프로그램에서 웹 사이트를 하드 코딩 방지하려면 :WebClient.BaseAddress를 사용하여 Silverlight에서 기본 URL 얻기

WebClient webClient = new WebClient(); 
Uri baseUri = new Uri(webClient.BaseAddress); 
UriBuilder uriBuilder = new UriBuilder(baseUri.Scheme, baseUri.Host, baseUri.Port); 
// Continue building the URL ... 

그것은 XAP 파일의 URL에 액세스하려면 단지 WebClient 인스턴스를 생성하는 것은 매우 어설픈 느낌. 대안이 있습니까?

답변

9

Application.Current.Host.Source은 XAP의 URI를 검색합니다.

+2

경고 : 예상대로 .ZIP로 .XAP 파일의 이름을 변경하는 경우 내 경험이 작동하지 않습니다 (호스팅 MIME 타입의 제한을 해결하기 위해). 알 수있는 것 - 자세한 내용은 http://conceptdev.blogspot.com/2009/03/xap-zip-silverlight-gets-confused.html – Conceptdev

0

이것은 ASP.NET에서 루트 URL을 작성합니다. 그런 다음 Silverlight의 InitParams를 통해 baseUrl을 전달하고 "ClientBin \ silverlight.xap"을 추가해야합니다.

// assemble the root web site path 
var baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd ('/') + '/'; 
+0

코드는 ASP.NET 서버 측 코드와 유사합니다. 내 질문에 대한 Silverlight 클라이언트 쪽 응용 프로그램에서 기본 URL을 얻는 방법에 대한 것입니다. –

+0

네 말이 맞아. 나는 약간의 설명을 추가했다. 다른 제안은 작동하지만 사이트의 기본 URL이 아니라 Silverlight 컨트롤의 URL을 제공합니다. 원하는 언어와 원하는 구문 분석 방법에 따라 다릅니다. –

9

내가 사용 ,

Uri baseUri = new Uri(Application.Current.Host.Source, "/"); 
// Example results: 
// http://www.example.com:42/ 
// or 
// https://www.example.com/ 

어떤 문자열이 필요하지 구문 분석! 또한 내 경우에는, 예를 들어, 전체 URL을 만들

Uri logoImageUri = new Uri(Application.Current.Host.Source, "/images/logo.jpg"); 
// Example result: 
// http://www.example.com/images/logo.jpg 
0

을이 방법을 사용할 수 있습니다, 나는 기본 폴더에서 작업하고 있지 않다. 나는 h || p : // localhost : 1234/subfolder에서 일하고 있습니다. Visual Studio IDE에서 작업하는 동안 문제가되지 않습니다. 그러나 서버로 이동할 때 실패합니다. 그 결과, 나는이

MyImage = New Uri(AppPathWeb, "HelloWorld.jpg") 

처럼 내 파일을 잡을 수

Public Sub AppPathWeb() 
    Res = Application.Current.Host.Source.AbsoluteUri.Substring(0, Application.Current.Host.Source.AbsoluteUri.LastIndexOf("/") + 1) 
    Return New Uri(Res) 
End Sub 

그리고 그 결과는 다음 라인

Application.Current.Host.Source 

이 같은 결과 공공 기능을 통해 교체 할 수 있습니다 , 서버의 URL은 h || p : //mydomain.com/mysubfolder/HelloWorld.jpg "

Good 행운

goldengel.ch