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

Posted

技术标签:

【中文标题】尝试第二次访问 json 文件时访问被拒绝【英文标题】:Access Denied when trying to access a json file for the second time 【发布时间】:2021-07-10 00:24:42 【问题描述】:

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

首次访问:

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 以获取撰写有关主题问题的指导 对于 iosandroid,您无法写入嵌入在应用程序包中的文件。我怀疑 UWP 也是如此,但我并不肯定 @Jason,也许,但正如评论中提到的,对字符串阅读器也没有帮助。 能否分享更多关于如何获取 AppSettings json 文件的代码? AppSettings 参数、路径字符串或Stream的类型是什么? 【参考方案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();
    

【讨论】:

以上是关于尝试第二次访问 json 文件时访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4 .htaccess 文件不拒绝访问

ios-app被拒绝了,怎么办

iOS app相机访问被拒绝iOS 9.1(黑屏)

为啥当我尝试移动目录时访问被拒绝?

尝试写入文件时,C#MVC 访问路径被拒绝

尝试删除 Temporary ASP.NET Files 文件夹中的文件时访问被拒绝