在Silverlight应用程序中,我有时需要连接到托管应用程序的网站。为了避免在Silverlight应用程序中对网站进行硬编码,我使用如下代码:
WebClient webClient = new WebClient();
Uri baseUri = new Uri(webClient.BaseAddress);
UriBuilder uriBuilder = new UriBuilder(baseUri.Scheme, baseUri.Host, baseUri.Port);
// Continue building the URL ...
创建WebClient
实例只是为了访问XAP文件的URL感觉非常笨拙。还有其他选择吗?
答案 0 :(得分:9)
Application.Current.Host.Source
检索XAP的URI。
答案 1 :(得分: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
答案 2 :(得分: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 ('/') + '/';
答案 3 :(得分:0)
就我而言,我不在主文件夹中工作。我在h || p:// localhost:1234 /子文件夹中工作。在Visual Studio IDE中工作时没问题。但是当移动到服务器时它失败了。以下几行
Application.Current.Host.Source
可以通过公共函数替换,结果如下:
Public Sub AppPathWeb()
Res = Application.Current.Host.Source.AbsoluteUri.Substring(0, Application.Current.Host.Source.AbsoluteUri.LastIndexOf("/") + 1)
Return New Uri(Res)
End Sub
结果,我可以像这样抓住我的文件
MyImage = New Uri(AppPathWeb, "HelloWorld.jpg")
结果是,在服务器上,url转到h || p://mydomain.com/mysubfolder/HelloWorld.jpg“
祝你好运goldengel.ch