关于IIS账户ApplicationPoolIdentity文件操作权限

public string BatchAttch(long recId) { var it= Ctx.Sys_FileBatchAttach.FirstOrDefault(ent => ent.RecId == recId); var urlRoot= F.Studio.Common.Cfg.SimpleCfgMgr.GetV<String>("BatchAttachAPIUrl", ""); using (System.Net.WebClient wc = new System.Net.WebClient()) { var url = urlRoot + "?m=getListByGuid&guid=" + it.GUID; var json= wc.DownloadString(url); var Serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var list= Serializer.Deserialize<List<BatchAttachInfo>>(json); var count = list.Count; foreach (var t in list) { if (!File.Exists(t.Path)) continue; var path = FileStorageProvider.GetPath(); var file = new FileInfo( t.Path); var length = file.Length; //后面如果使用Move需要提前读取文件大小,后面会删除 //访问这个属性时会即时检测文件是否存在。 var tagFilename = Path.Combine(FileStorageProvider.C_Root, path); DirectoryInfo dir = new DirectoryInfo(Path.GetDirectoryName(tagFilename)); if (!dir.Exists) dir.Create(); #region 转移文件 File.Copy(t.Path, tagFilename); #endregion #region 添加数据库 var ent = new Sys_Files(); ent.AddTime = it.AddTime; ent.AddUser = it.AddEmpNo; ent.FileName = HttpUtility.UrlDecode( t.Name); ent.Meno =HttpUtility.UrlDecode(t.Comm); ent.Path = path; ent.RefId = it.RefId; ent.RefType = it.RefType; ent.FileSize = length; var srv= new Sys_FilesService(); srv.Add(ent); #endregion } return count.ToString(); } } public class BatchAttachInfo { public int Code { get; set; } public string Msg { get; set; } public string Path { get; set; } public string Name { get; set; } public long Size { get; set; } public string MIME { get; set; } public long FileId { get; set; } public DateTime? AddTime { get; set; } public String ClientNo { get; set; } public String Comm { get; set; } public long SessionId { get; set; } public String GUID { get; set; } }
应用程序池运行在ApplicationPoolIdentity 账户下
可以对服务已存在文件进行Copy操作,但是不能进行Delete操作(Move包含delete)
要进行需要给对应目录添加IIS_IUSER用户的,修改与运行等权限,比较不安全。
建议只进行Copy,重复的文件可以安排Windows任务定期删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述