我正在为我的web应用程序使用ASP.NET。我可以使用这个方法Server.MapPath()在服务器路径中写一个文本文件。但我也想在不同的位置创建一个文本文件,比如C:\或D:\。我使用的是IIS 5.1版。
这是我在C:\驱动器中写入文件的代码。
string text="Welcome";
StreamWriter sw = new StreamWriter("C:\\sample.txt", true);
sw.WriteLine(text);
sw.Close();当我运行应用程序时,它抛出一个运行时异常
UnauthorizedAccessException. Access to Path C:\sample.txt is denied.请指导我如何在C:\驱动器中编写文本文件...
发布于 2012-06-14 18:53:47
很明显,您需要权限才能在磁盘上的任何位置创建/写入/删除等文件。
这里的提示是,您的asp.net应用程序在一个池下运行,并且该池在特定用户下运行-该用户必须具有正确的权限。
更新
在一个asp.net页面上,有两种类型的用户一起“运行”。其中一个问题与IIS的权限有关,这就是KBoek提到的问题。例如,用户从IIS请求一个页面,而IIS使用用户A查看是否可以读取此文件并将其发送回web -或具有运行权限。
第二种类型的用户是池。从IIS有权运行池的那一刻起,就使用池用户来运行它。因此,如果要通过池读取文件,则池必须具有读取权限,而不是iis。
为什么这里有两种用户。因为一个代表看到数据的用户,另一个代表我们所做的编程。
例如,如果我们有一个自动化工具,可以删除一组文件,那么我们不能让远程客户端直接访问这个文件,如果他喜欢,也可以删除它-但只有我们必须有这个权限才能只在编程时执行。因此,我们的asp.net程序与连接和查看页面的用户具有不同的权限,因此这里有两种用户。
发布于 2012-06-14 18:53:17
服务器进程在特定用户(取决于您的IIS版本)下运行,该用户必须对您要保存文件的文件夹具有写入权限。告诉我您的IIS版本,然后给我一分钟,我将为您查找用户名。
发布于 2012-06-14 18:54:29
要写入某个位置,web服务器用户必须具有对该位置的写入访问权限。您必须设置此文件的文件夹权限才能工作。确切的用户取决于您的IIS版本。
https://stackoverflow.com/questions/11031524
复制相似问题