在Silverlight中使用WebClient.BaseAddress获取基本url的替代方法
在Silverlight应用程序中,我有时需要连接到承载应用程序的网站。为了避免在Silverlight应用程序中硬编码网站,我使用如下代码:在Silverlight中使用WebClient.BaseAddress获取基本url的替代方法,silverlight,url,webclient,Silverlight,Url,Webclient,在Silverlight应用程序中,我有时需要连接到承载应用程序的网站。为了避免在Silverlight应用程序中硬编码网站,我使用如下代码: WebClient webClient = new WebClient(); Uri baseUri = new Uri(webClient.BaseAddress); UriBuilder uriBuilder = new UriBuilder(baseUri.Scheme, baseUri.Host, baseUri.Port); // Contin
WebClient webClient = new WebClient();
Uri baseUri = new Uri(webClient.BaseAddress);
UriBuilder uriBuilder = new UriBuilder(baseUri.Scheme, baseUri.Host, baseUri.Port);
// Continue building the URL ...
Public Sub AppPathWeb()
Res = Application.Current.Host.Source.AbsoluteUri.Substring(0, Application.Current.Host.Source.AbsoluteUri.LastIndexOf("/") + 1)
Return New Uri(Res)
End Sub
仅仅为了访问XAP文件的URL而创建一个
WebClient
实例感觉非常笨拙。有其他选择吗?Application.Current.Host.Source
检索XAP的URI。这将在ASP.NET中构建根url。然后需要通过Silverlight的InitParams传入baseUrl,并添加“ClientBin\Silverlight.xap”
我用
不需要字符串解析!
您还可以使用此方法创建完整URL,例如
Uri logoImageUri = new Uri(Application.Current.Host.Source, "/images/logo.jpg");
// Example result:
// http://www.example.com/images/logo.jpg
就我而言,我不是在主文件夹中工作。我在h|p://localhost:1234/子文件夹中工作。在VisualStudioIDE中工作时,这没有问题。但当移动到服务器时,它会失败。下面几行
Application.Current.Host.Source
可以通过公共函数替换,结果如下:
WebClient webClient = new WebClient();
Uri baseUri = new Uri(webClient.BaseAddress);
UriBuilder uriBuilder = new UriBuilder(baseUri.Scheme, baseUri.Host, baseUri.Port);
// Continue building the URL ...
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您的代码看起来像ASP.NET服务器端代码。我的问题是关于如何在Silverlight客户端应用程序中获取基本URL。您是对的。我添加了一些说明。另一个建议有效,但为您提供了Silverlight控件的URL,而不是网站的基本URL。这取决于您想要哪一个,以及需要多少解析警告:根据我的经验,如果您将.XAP文件重命名为.ZIP(以避免托管MIME类型限制),这将无法像预期的那样工作。需要注意的是-更多信息在此处博客