Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Silverlight中使用WebClient.BaseAddress获取基本url的替代方法_Silverlight_Url_Webclient - Fatal编程技术网

在Silverlight中使用WebClient.BaseAddress获取基本url的替代方法

在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

在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 ...
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类型限制),这将无法像预期的那样工作。需要注意的是-更多信息在此处博客