获取ASP.NET临时文件夹路径

c00*_*0fd 23 .net c# asp.net

从我的C#代码,不在IIS/ASP.NET中运行,我需要向ASP.NET临时文件夹添加用户帐户权限.(将我的站点添加到IIS时需要.)本地系统上的文件夹是:

C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

我讨厌将这条路径硬编码到我的代码中,所以我想知道我是否可以从.NET框架本身检索它?

Vah*_*idN 9

尝试System.Web.HttpRuntime.CodegenDir获取为当前应用程序存储ASP.NET临时文件的目录的物理路径.


c00*_*0fd 8

嗯.我不知道会那么复杂.由于缺乏更好的答案,我能够想出这样的事情:

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.

纠正我,如果你找到更好的方法?


Lun*_*Dev 5

最简单的验证方法:

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)