zoukankan      html  css  js  c++  java
  • 关于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; }
    
            }
    View Code

    应用程序池运行在ApplicationPoolIdentity 账户下

    可以对服务已存在文件进行Copy操作,但是不能进行Delete操作(Move包含delete)

    要进行需要给对应目录添加IIS_IUSER用户的,修改与运行等权限,比较不安全。

    建议只进行Copy,重复的文件可以安排Windows任务定期删除。

  • 相关阅读:
    flash时间控制
    内联元素及其特性 &块元素
    清除浮动两种方法
    ie6 lineheight失效 待测试
    表单 文字和输入框对齐的最简单的方法
    ie6bugie6默认的最小高度是设定字体的高度
    CSS triangle generator
    解释性的语言vs编译性语言
    outerHeight(options)
    获取input的value值得 jQuery插件
  • 原文地址:https://www.cnblogs.com/wdfrog/p/12381492.html
Copyright © 2011-2022 走看看