LaunchUriAsync无法导航到正确的uri

时间:2012-12-20 08:23:23

标签: c# windows-8 microsoft-metro

我需要导航到我的城域网应用程序中的互联网页面。 我的网址是(样本)'http://www.foo.com/#/foo'。 问题是LaunchUriAsync将网址剪切为“http://www.foo.com”。

try
{
    Uri uri = new Uri(item.UriCode); 
    await Launcher.LaunchUriAsync(uri);
}
catch (Exception exception)
{
    //TODO
}

我哪里错了? 问候。

更新:

我确切地知道uri = http://www.foo.com/#/foo。 所以问题来自LaunchUriAsync。

2 个答案:

答案 0 :(得分:0)

我尝试使用相同的代码只是硬编码你提到的uri 请检查以下代码:

    /// <summary>
    /// Invoked when this page is about to be displayed in a Frame.
    /// </summary>
    /// <param name="e">Event data that describes how this page was reached.  The Parameter
    /// property is typically used to configure the page.</param>
    protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        try
        {
            Uri uri = new Uri("http://www.foo.com/#/foo");
            await Launcher.LaunchUriAsync(uri);
        }
        catch (Exception exception)
        {
            //TODO
        }
    }

输出如下所示

Launcher Test with respective URL

我认为还有其他一些问题。 可以使用item.UriCode行查看。

答案 1 :(得分:0)

我认为很难从你的例子中诊断出真正的错误。

看起来您正在尝试导航到网页中的锚点,但是使用不正确的语法/指向不存在的锚点来执行此操作。但是,您的示例链接页面似乎不包含可导航的锚点。

假设这实际上是您要实现的目标,请尝试以下示例,您将看到导航按预期工作

Launcher.LaunchUriAsync(new Uri("http://www.hypergurl.com/anchors.html#bottom"));

如果这不是您想要实现的目标,我建议将URI中#字符的存在解释为IE的锚引用,这就是为什么你没有得到结果你需要。