Get ASP.NET temporary folder path
从我的C#代码(不是从IIS / ASP.NET内部运行)中,我需要向ASP.NET临时文件夹添加用户帐户权限。 (将我的网站添加到IIS时,这是必需的。)我的本地系统上的文件夹是:
C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\Temporary ASP.NET Files
我不想将此路径硬编码到我的代码中,所以我想知道是否可以从.NET框架本身中检索它?
尝试
嗯我不知道会这么复杂。由于缺少更好的答案,我想出了这样的东西:
1 2 3 4 5 | using System.Runtime.InteropServices; string net_base = Path.GetFullPath(Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), @"..\\..")); string strTemp32 = string.Concat(net_base, @"\\Framework\", RuntimeEnvironment.GetSystemVersion(), @"\\Temporary ASP.NET Files"); string strTemp64 = string.Concat(net_base, @"\\Framework64\", RuntimeEnvironment.GetSystemVersion(), @"\\Temporary ASP.NET Files"); |
显然有两个临时文件夹-用于32位和64位进程。它基于此示例,并且还基于默认ASP.NET临时文件夹为
纠正我,如果您找到更好的方法?
如果在例如App_Data中使用自己的临时文件夹,将会更加安全。
不幸的是,
好消息是,您可以使用element在web.config中指定文件位置来更改它。
验证的最简单方法:
1 2 3 4 5 6 7 | if (file.ContentLength > 0) { string temp = Path.GetTempPath(); var path = Path.Combine(temp, fileName); file.SaveAs(path); } |
并在web.config中:
1 2 3 | <system.web> <compilation tempDirectory="D:\\MyTempFiles" /> </system.web> |
我认为这应该有所帮助...
这里的文件