.NET下载文件报错System.UnauthorizedAccessException的解决方法
假设VS代码对应路径为E:\Projects\Web1,在VS用“发布Web”的方式发布后的路径为E:\Site\Web1。
在IIS新建2个站点,站点A指向E:\Projects\Web1,站点B指向E:\Site\Web1。
现在出现一个异常情况,站点B能正常下载123.xls,站点A下载时却提示错误:
System.UnauthorizedAccessException: 对路径“E:\Projects\Web1\Download\123.xls”的访问被拒绝。
在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
在 System.IO.FileStream..ctor(String path, FileMode mode)
站点A和站点B的目录和文件权限一模一样,特意为站点A增加了权限等还是无效,搜索了一下,最后找到了解决方法,把下载代码里面的
FileStream fs = File.Open(filePath, FileMode.Open)
改为就可以下载了。
FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read);
官方MSDN文档如下:
File.Open 方法 (String, FileMode)
打开指定路径上的 FileStream,具有读/写访问权限。
异常 UnauthorizedAccessException
path 指定了一个只读文件。
- 或 -
在当前平台上不支持此操作。
- 或 -
path 指定了一个目录。
- 或 -
调用方没有所要求的权限。
- 或 -
mode 为 Create,指定文件为隐藏文件。
这时候回过头再去看E:\Projects\Web1\Download\123.xls,果然是只读属性,
而E:\Site\Web1\Download\123.xls没有只读属性;
把E:\Projects\Web1\Download\123.xls的只读属性去掉,重新恢复刚开始的代码
FileStream fs = File.Open(filePath, FileMode.Open); 这时下载就正常。
总结,解决方法有2种:
1、把文件的只读属性去掉;
2、FileStream fs = File.Open(filePath, FileMode.Open)改用下面这行代码
FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read);
.NET下载文件报错System.UnauthorizedAccessException的解决方法相关推荐
- C#文件拒绝访问。上传文件报错System.UnauthorizedAccessException: 对路径XXX的访问被拒绝。
https://blog.csdn.net/you5552391/article/details/45245523 常详细信息: System.UnauthorizedAccessException: ...
- Linux上的Django项目,下载文件报错,编码格式错误解决
1.Django中,下载文件,报编码错误,具体报错信息当时忘记记录了,这里只记录一下解决办法,网上大部分的解决方法都是说在/usr/lib/python3.6/site-packages目录底下新建一 ...
- golang os.Rename 移动文件 报错 invalid cross-device link 解决方法
今天在写golang,os.Rename使用移动文件的时候,报错: invalid cross-device link. 翻译过来的意思是 "无效的跨设备连接". 原来是我的lin ...
- Windows用scp服务器下载文件报错No file or directionary
问题描述 在Windows从命令行scp从linux服务器下载文件报错No file or directionary,查找相关的技术文档无果.其他问答里出现的错误基本为终端登录服务器后的下载文件报错, ...
- cadence SPB17.4 - allegro - CAM350_V10.7CN 引入槽孔(.rou)文件报错问题的优雅解决思路
cadence SPB17.4 - allegro - CAM350_V10.7CN 引入槽孔(.rou)文件报错问题的优雅解决思路 文章目录 cadence SPB17.4 - allegro - ...
- Oracle 报错 28000原因和解决方法
Oracle 报错 28000原因和解决方法 使用PLSQL登录Oracle数据库时提示"ORA-28000:这个帐号被锁定". 出现这个问题的原因是:在Oracle databa ...
- windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法
windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法 问题环境 问题描述 问题原因 & 解决办法 问题环境 Windows 10 x64 .python 3.8. ...
- IDEA双击不报错打不开解决方法
IDEA双击不报错打不开解决方法 今天破解IDEA时修改Edit Custom VM Option那里出现问题,可能是因为有中文路径的原因,也可能是参数设置错误导致IDEA打不开的问题,没有报错,点击 ...
- mysql source导入报错ERROR 1366的解决方法
mysql source导入报错ERROR 1366的解决方法 参考文章: (1)mysql source导入报错ERROR 1366的解决方法 (2)https://www.cnblogs.com/ ...
最新文章
- Java使用简单工厂模式对面向接口编程模式的深度解耦实现
- 部分博客中的代码已放到了GitHub上,欢迎大家下载阅读!
- Android App 瘦身总结 第三章 代码混淆及优化
- matlab 判断元素索引_matlab – 获取矩阵中n个最大元素的索引
- 在windows xp下,一块网卡绑定多个ip
- 嘌呤含量高的食物大全
- PaddlePaddle(2)——数据获取与处理(以CV任务为主)
- java抛出代码,java异常之手动抛出与自动抛出代码实例解析
- 获取ip地址 域名获取与解析
- 大麦盒子显示服务器超时,大麦盒子卡顿怎么办?这几个方法可以快速解决
- 信号ctft频谱matlab,信号、系统分析与控制(MATLAB版)第4章连续信号的频域分析.ppt...
- [图形学]ASTC纹理压缩格式
- OEM和ODM的区别
- linux下查看进程占用网络,linux怎么查看进程占用端口
- 如何实现局域网时间同步
- 前端开发面试题及答案整理
- HCU500主轴编码器检测工具
- select函数的分析
- Instruments使用指南(二)--- 开始Instruments之旅
- ftp主动模式和被动模式的区别
热门文章
- 20210501:字符串与哈希表力扣专题学习记录
- html渐变显示动画效果,使用CSS transition和animation改变渐变状态
- java 表达式2004的值_javaSE习题 第三章 运算符、表达式和语句
- bootlogo画面制作和替换
- BOMTool更新到1.3.0.10
- 最全中文leetcode解题攻略:思路知识点代码都有,搞定AI大厂笔试
- 云知声今年要量产三款芯片,还公布了多模态AI芯片规划
- 前端利器!让AI根据手绘原型生成HTML | 教程+代码
- 百度研究院在硅谷新设两大实验室,三名AI科学家加盟
- BZOJ5092:[Lydsy1711月赛]分割序列(贪心,高维前缀和)