ASP.Net在服务器上写临时文件

时间:2011-03-24 04:11:54

标签: asp.net permissions

我在Intranet上有一个ASP.Net(2.0)应用程序需要模拟用户Windows登录,它通过拥有      identity impersonate =“true” 在web.config文件中。

在几个地方,它需要在将结果文件发送给用户之前在服务器的Temp文件夹中创建一个文件(一个实例中的文本文件和另一个实例中的Word文档),之后将其删除来自Temp文件夹。

它遇到权限问题,因为被模拟的用户没有写入服务器硬盘的权限。

我希望我可以切换到默认的IIS(或其他一些内置帐户)来执行文件访问功能。

这可能吗?如果是这样,怎么样?我无法在服务器上创建任何新帐户。

是Windows Server 2003。

由于

3 个答案:

答案 0 :(得分:2)

是的,可以使用System.Security.Principal命名空间,有关示例,请参阅http://support.microsoft.com/kb/306158

基本上,您通过模拟相应的用户帐户切换到具有权限的上下文,执行文件IO然后撤消模拟。

然而,更简单的解决方案是授予用户(或组)的写访问权限。授予域帐户/组权限,这样您就不必在服务器上创建本地帐户。

答案 1 :(得分:2)

我已经遇到了像你这样的问题,然后我改变主意并开始使用内存流并立即将它们写入响应对象(而不是将其写入磁盘并发送到客户端之后)。这样我就可以节省用户下载后删除它。

答案 2 :(得分:-1)

最简单的方法可能是让'Everyone'组对temp文件夹进行写访问