【问题标题】:Access Denied when trying to access a json file for the second time尝试第二次访问 json 文件时访问被拒绝
【发布时间】:2024-01-08 23:03:01
【问题描述】:

我可以在初始化时访问一次文件,但不能再次访问它。

首次访问:

static Gun()
    {
        using (var sr = new StreamReader(AppSettings))
        {
            Settings = JsonConvert.DeserializeObject<Settings>(sr.ReadToEnd());
            sr.Close();
        }

第二次访问:

 public static void Save()
    {
        // Changing to StreamReader doesn't work either
        using (var sr = new StreamWriter(AppSettings))
        {
            var settings = JsonConvert.SerializeObject(Settings);
            sr.WriteLineAsync(settings);
            sr.Close();
        }
    }

当我第二次尝试访问它时,我得到一个未经授权的访问异常。不是正在使用的文件,而是未经授权的文件。为什么我的项目的范围或权限会在同一个应用中发生变化?

【问题讨论】:

  • 您没有发布任何代码或有关您所做工作的有意义的详细信息,因此我们无法为您提供帮助。请阅读How to Ask 以获取撰写有关主题问题的指导
  • 对于 iOS 和 Android,您无法写入嵌入在应用程序包中的文件。我怀疑 UWP 也是如此,但我并不肯定
  • @Jason,也许,但正如评论中提到的,对字符串阅读器也没有帮助。
  • 能否分享更多关于如何获取 AppSettings json 文件的代码?
  • AppSettings 参数、路径字符串或Stream的类型是什么?

标签: xamarin.forms uwp xamarin.uwp


【解决方案1】:

第二次尝试访问 json 文件时拒绝访问

一般情况下,我们建议您将设置文件存储在 UWP 应用本地存储中。它拥有完全的访问权限。

例如

string settingFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SettingFile.json");

public void GetSetting()
{

    using (var reader = new System.IO.StreamReader(settingFile))
    {
        var json = reader.ReadToEnd();
        var settings = JsonConvert.DeserializeObject<Settings>(json);
        reader.Close();
    }
}

public void Save()
{

    using (var sr = new StreamWriter(settingFile))
    {
        var newSetting = new Settings()
        {
            ID = "SGML"`enter code here`  
        };
        var settings = JsonConvert.SerializeObject(newSetting);
        sr.WriteLineAsync(settings);
        sr.Close();
    }
}

【讨论】: