我在Intranet上有一个ASP.Net(2.0)应用程序需要模拟用户Windows登录,它通过拥有 identity impersonate =“true” 在web.config文件中。
在几个地方,它需要在将结果文件发送给用户之前在服务器的Temp文件夹中创建一个文件(一个实例中的文本文件和另一个实例中的Word文档),之后将其删除来自Temp文件夹。
它遇到权限问题,因为被模拟的用户没有写入服务器硬盘的权限。
我希望我可以切换到默认的IIS(或其他一些内置帐户)来执行文件访问功能。
这可能吗?如果是这样,怎么样?我无法在服务器上创建任何新帐户。
是Windows Server 2003。
由于
答案 0 :(得分:2)
是的,可以使用System.Security.Principal
命名空间,有关示例,请参阅http://support.microsoft.com/kb/306158。
基本上,您通过模拟相应的用户帐户切换到具有权限的上下文,执行文件IO然后撤消模拟。
然而,更简单的解决方案是授予用户(或组)的写访问权限。授予域帐户/组权限,这样您就不必在服务器上创建本地帐户。
答案 1 :(得分:2)
我已经遇到了像你这样的问题,然后我改变主意并开始使用内存流并立即将它们写入响应对象(而不是将其写入磁盘并发送到客户端之后)。这样我就可以节省用户下载后删除它。
答案 2 :(得分:-1)
最简单的方法可能是让'Everyone'组对temp文件夹进行写访问