gpt4 book ai didi

c# - .Net Core 中不显示 URL 源图像

转载 作者:行者123 更新时间:2023-11-30 16:37:16 24 4
gpt4 key购买 nike

我在 WPF .Net Core 3.0 中加载 URL 图像时遇到了问题。我认为这是与 .Net 版本相关的问题,而不是与代码相关的问题或其他任何问题(假设我在 .Net Framework 4.7.2 中没有问题)。

这是有问题的行: <Image Source="http://cdn-www.airliners.net/aviation-photos/photos/7/0/1/1892107.jpg"/>

我需要 URL 格式的图像,我正在从 SQL 数据库中提取它。通过在示例中将源直接设置为 URL,我相信我已经消除了任何可能的与服务器相关的问题(原始应用程序稍微复杂一点,但即使是这种简化的单行代码也不起作用)。

最佳答案

问题是由于 URL 具有一系列重定向,包括从 HTTPSHTTP,这是不安全的。

您可以通过在浏览器中加载原始 URL 并在开发人员控制台中检查网络请求选项卡来查看执行的重定向:

so many redirects

您可以通过向 Image 控件的 ImageFailed 添加处理程序来确认这是导致错误的原因事件:

图像控制:

<Image Source="http://cdn-www.airliners.net/aviation-photos/photos/7/0/1/1892107.jpg" 
ImageFailed="Image_ImageFailed" />

事件处理器:

private void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
{
Debug.WriteLine(e.ErrorException.Message);
}

这将导致以下错误消息被打印到调试输出中:

The remote server returned an error: (301) Moved Permanently.

为什么这只发生在 .NET Core 中?

Image 在下面使用 HttpWebRequest 来解析 URL 源。在 .NET Core 中,HttpWebRequest 行为被有意更改为不允许遵循 HTTPS -> HTTP 重定向,因为它存在安全风险。你可以看看this issue有关详细信息,尤其是 this post来自大卫·舒尔曼:

Yes, this is by-design in .NET Core. This is a security-related change to prevent HTTPS -> HTTP redirection which is inherently insecure.

关于c# - .Net Core 中不显示 URL 源图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58904319/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com