You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从绝对URI获取ResourceStream?调用后返回null求助

解决Application.GetResourceStream返回null的问题

嘿,我来帮你搞定这个问题!Application.GetResourceStream返回null大概率是因为你用错了它的适用场景,咱们拆解下可能的原因和解决办法:

  • 核心误区:它不支持加载远程HTTP资源
    你代码里用的是http://开头的绝对URI,但GetResourceStream的设计目的是加载应用程序内嵌的本地资源,比如项目里打包的图片、XAML文件这类,完全不支持加载网络上的资源。这就是为什么你的sri会是null!
    如果是要加载远程图片,直接给BitmapImage设置UriSource就好,不用绕弯子:

    BitmapImage src = new BitmapImage();
    src.UriSource = new Uri("http://----", UriKind.Absolute);
    WriteableBitmap bitmap = new WriteableBitmap(src);
    
  • 如果是加载本地内嵌资源,检查路径和生成属性
    要是你本来想加载项目里的本地资源,那得做两步检查:

    1. 右键资源文件(比如图片),在属性里把生成操作设置为Resource或者Embedded Resource;
    2. 确保URI格式正确,要包含程序集名称和资源路径:
      // 替换YourAssemblyName为你的程序集名称,路径对应资源实际位置
      StreamResourceInfo sri = Application.GetResourceStream(
          new Uri("/YourAssemblyName;component/Images/your-image.png", UriKind.Relative));
      if (sri != null)
      {
          BitmapImage src = new BitmapImage();
          src.SetSource(sri.Stream);
          WriteableBitmap bitmap = new WriteableBitmap(src);
      }
      
  • 非要用流加载远程资源?换HttpClient/WebClient
    如果你的需求必须通过流来加载远程图片,那得用HTTP客户端来下载流,而不是GetResourceStream:

    // 记得给方法加上async关键字
    using (HttpClient client = new HttpClient())
    {
        using (Stream stream = await client.GetStreamAsync("http://----"))
        {
            BitmapImage src = new BitmapImage();
            src.SetSource(stream);
            WriteableBitmap bitmap = new WriteableBitmap(src);
        }
    }
    

内容的提问来源于stack exchange,提问作者Rachel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:20:32