2009-07-24 11 views
2

Silverlightアプリケーションでは、アプリケーションがホストされているWebサイトに接続する必要があることがあります。ハード私のSilverlightアプリケーションでWebサイトをコーディング避けるために私はこのようなコードを使用します。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

警告:期待どおり(周りのMIMEタイプの制限をホスティング取得する).ZIPにあなたの.xapファイルの名前を変更する場合は、私の経験では、これは動作しません。ちょうど何かを知っている - 詳細はこちらのブログhttp://conceptdev.blogspot.com/2009/03/xap-zip-silverlightgets-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

関連する問題