• 错误记录-FileStream访问被拒绝


    简介:

    问题:因项目需要,软件需要读取授权文件中的密文与本机验证码做一定的逻辑比对,使用FileStream实现文件的读取,在本机调试没问题,但在其他同事电脑上有一些出现授权一直不通过的情况。

    --MaQaQ 2023-10-24

    分析:

    1、首先怀疑是否授权文件生成出错,反复生成了几遍,还确认了下文件中的密文,出错的可能性不大,pass。

    2、其次怀疑是部署的电脑环境问题,巧合的是,授权不通过的电脑刚好是win11,而我本机是win10,一度让我怀疑是操作系统问题,但这个也太玄学了,先搁置。

    3、查看了下授权验证的逻辑,发现抛异常了也会导致验证失败,折腾了一下最后还是定位到异常的位置:

    using (Stream stream = new FileStream(fullName, FileMode.Open))

    获取到的异常信息类似:System.UnauthorizedAccessException:“对路径“xxx”的访问被拒绝。这个我就很熟悉了,一般是因为权限问题,右键点开授权文件的属性一看,果然只读被勾上了。

     4、检查了下一开始生成的授权文件,只读属性是没有勾选的,所以在本机调试没问题。那么问题是出在发送和接收文件这块。

    5、我们发送授权文件时是直接用的微信,但前面说到,测试时只是部分电脑出问题,于是我问了下同事的接收方法,有些是收到文件直接复制,有些是右键另存为,我自己测试了下,确实直接复制的会被改成只读,到此真相大白。

    6、另外,如果我们对文件只需要读取,那么可以将上述抛异常的代码改为:

    using (Stream stream = new FileStream(fullName, FileMode.Open, FileAccess.Read))

    就可以打开只读的文件,如果需要的是读写的权限,那么还是需要手动将属性中的只读去掉勾选。

    总结:

    1、微信直接复制的文件是只读的,可以使用另存为

    2、对于只读的文件,可以将访问模式设置为Read

  • 相关阅读:
    汽车品牌查询及车型大全查询
    iNavFlight之MSP DJI协议飞控端请求应答
    [附源码]Python计算机毕业设计Django校园订餐管理系统
    【自留地】后端 - PHP - MySQL - Nginx - Python - Java
    Python基础——异常处理
    工作小计-GPU硬编以及依赖库 nvcuvid&nvidia-encode
    优先队列题目:数据流的中位数
    ES13 新增特性
    稀疏矩阵的压缩存储
    go进阶语法10问
  • 原文地址:https://www.cnblogs.com/magicMaQaQ/p/17784037.html