从我的C#代码,不在IIS/ASP.NET中运行,我需要向ASP.NET临时文件夹添加用户帐户权限.(将我的站点添加到IIS时需要.)本地系统上的文件夹是:
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
我讨厌将这条路径硬编码到我的代码中,所以我想知道我是否可以从.NET框架本身检索它?
嗯.我不知道会那么复杂.由于缺乏更好的答案,我能够想出这样的事情:
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");
Run Code Online (Sandbox Code Playgroud)
显然有两个临时文件夹 - 用于32位和64位进程.它基于此示例,并且还依赖于默认ASP.NET临时文件夹的假设hard-coded.
纠正我,如果你找到更好的方法?
最简单的验证方法:
if (file.ContentLength > 0)
{
string temp = Path.GetTempPath();
var path = Path.Combine(temp, fileName);
file.SaveAs(path);
}
Run Code Online (Sandbox Code Playgroud)
并在 web.config 中:
<system.web>
<compilation tempDirectory="D:\MyTempFiles" />
</system.web>
Run Code Online (Sandbox Code Playgroud)