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

UWP项目初始化Json文件流时抛出System.NotSupportedException求助

解决UWP项目中加载Google OAuth JSON密钥文件的System.NotSupportedException问题

我之前在UWP项目里对接Google OAuth的时候也碰到过这个一模一样的坑!问题根源在于UWP的沙箱文件访问机制和传统桌面程序差异很大,直接用System.IO.File相关的方法去读取密钥文件,必然会触发System.NotSupportedException。下面给你几个针对性的解决步骤:

1. 确认文件的输出配置

你已经把BuildAction设为Content了,这一步是对的,但还要补充设置Copy to Output Directory:

  • 在解决方案资源管理器里右键你的JSON密钥文件,选择“属性”
  • 把Copy to Output Directory改成Copy if newer或者Copy always
  • 这样文件才会被正确复制到UWP应用的安装目录里,后续才能被访问到

2. 使用UWP专属的StorageFile API读取文件

UWP沙箱限制了直接访问文件系统路径,必须用Windows.Storage命名空间下的API来读取应用包内的文件。给你一段示例代码:

using Windows.ApplicationModel;
using Windows.Storage;
using System.IO;

// 异步方法中执行以下逻辑
var installFolder = Package.Current.InstalledLocation;
// 如果你的JSON文件放在Assets文件夹里,路径要写成"Assets/your-key-file.json"
var jsonFile = await installFolder.GetFileAsync("your-key-file.json");
using (var stream = await jsonFile.OpenStreamForReadAsync())
{
    // 这里执行Google OAuth的初始化操作,比如加载密钥
    var secrets = GoogleClientSecrets.Load(stream);
    // 后续的授权逻辑...
}

3. 排查异常的具体原因

如果还是报错,建议你查看异常的InnerException信息,它会告诉你具体是哪个操作不被支持——大概率是你用了File.OpenRead()这类传统IO方法,这类方法在UWP沙箱里是被禁止的,必须替换成上面的StorageFile方式。

额外提示

如果你的JSON文件需要随应用更新而更新,或者需要用户自定义,也可以考虑把文件放在应用的LocalFolder里,读取方式类似,只是获取文件夹的方法换成ApplicationData.Current.LocalFolder即可。

内容的提问来源于stack exchange,提问作者André B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:51:19