【问题标题】:Content for the URI cannot be loaded. The URI may be invalid无法加载 URI 的内容。 URI 可能无效
【发布时间】:2012-06-14 22:37:19
【问题描述】:

我必须说我对此感到很困惑,我希望你们中的一些人可能遇到过同样的问题。我有一个 HyperlinkBut​​ton,像这样创建:

var hb = new HyperlinkButton
{
     Content = fooText,
     ClickMode = ClickMode.Release,
     NavigateUri = new Uri(fooLink.Value)
};
hb.Click += hb_Click;

static void hb_Click(object sender, RoutedEventArgs e)
{
    var btn = (HyperlinkButton)sender;
    HtmlPage.Window.Navigate(btn.NavigateUri, "_blank");
}

该链接是指向网站 (http://...) 的绝对 URL,而不是在应用程序内部。因此,我想在新的浏览器选项卡中打开它。这正是它的作用!该网站在新选项卡中打开,但在应用程序选项卡中出现此错误:

如果我将事件处理程序更改为没有目标参数,如下所示:

HtmlPage.Window.Navigate(btn.NavigateUri);

...错误也出现了,就在浏览器离开应用程序之前。但我想打开一个新标签。

我正在使用 Visual Studio 11 中的 Silverlight 业务应用程序模板,我已经注意到它有一些神秘的错误,这可能就是其中之一。总而言之,它有效,我只需要摆脱错误消息。但是事件处理程序中没有抛出我可以吞下的异常。

【问题讨论】:

  • 请在文本中复制/粘贴错误的堆栈跟踪,截图没有意义。
  • 哦,好的,下次我会努力记住的。我认为发布整个内容可能会有所帮助,而不仅仅是错误详细信息。感谢您的编辑。
  • 如果图像无法访问,这里是文本并翻译成英文(出于某种原因,原始消息是“双语”):无法加载 URI 的错误内容。 URI 可能无效。参数名称: uri System.Windows.Navigation.NavigationService.NavigateCore 中的错误详情(Uri uri, NavigationMode mode, Boolean suppressJournalAdd, Boolean isRedirect)
  • Images 托管在专门的 SO 服务上,所以会保存很长时间。

标签: c# silverlight exception-handling silverlight-5.0


【解决方案1】:

你可以这样做:

var hb = new HyperlinkButton
{
     Content = fooText,
     ClickMode = ClickMode.Release,
     NavigateUri = new Uri(fooLink.Value),
     TargetName = "_blank"
};

没有 Click 事件处理程序。

它应该以更简洁的方式完全按照您的意愿行事。

【讨论】:

  • 好的,谢谢!我不知道为什么它有效,但它有效。设置 TargetName 属性后,错误不再显示。
  • 正如我在对该问题的评论中所说,我在客户端部署的某些未知 CMS 上遇到了此类问题(无法以编程方式导航)。在多次尝试修复失败后,切换到本机 HyperlinkBut​​ton 功能修复了该问题。
【解决方案2】:

试试这个:

    /// <summary>
    /// Hyperlink button - simulates hyperlink click
    /// </summary>
    private class HyperlinkButtonWrapper : HyperlinkButton
    {
        public void OpenURL(string navigateUri)
        {
            OpenURL(new Uri(navigateUri, UriKind.Absolute));
        }

        public void OpenURL(Uri navigateUri)
        {
            base.NavigateUri = navigateUri;
            base.TargetName = "_blank";
            base.OnClick();
        }
    }

    /// <summary>
    /// Method opens url
    /// <para>Example: OpenURL("http://www.google.com")</para>
    /// </summary>
    /// <param name="navigateUri"></param>
    public static void OpenURL(string navigateUri)
    {
        new HyperlinkButtonWrapper().OpenURL(navigateUri);
    }

【讨论】:

  • 很遗憾,这并不能解决问题。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
相关资源
最近更新 更多