我正在为我的 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:\
驱动器中写入文本文件...
最佳答案
很明显,您需要权限才能在磁盘上的任何位置创建/写入/删除等文件。
这里的提示是您的 asp.net 应用程序在一个池下运行,并且该池在特定用户下运行 - 该用户必须具有正确的权限。
更新
在一个asp.net 页面上有两种用户一起“运行”。一个与 IIS 的权限有关,这就是 KBoek 所说的。例如,用户从 IIS 请求一个页面,IIS 使用 USER A 查看是否可以读取此文件并将其发送回 Web - 或者是否具有运行权限。
第二种用户是pool。从 IIS 有权运行池的那一刻起,然后使用池用户运行它。因此,如果文件要由池读取,则池必须具有读取权限,而不是 iis。
为什么这里有两种用户。因为一个代表看到数据的用户,另一个代表我们做的程序。
例如,如果我们有一个自动化工具可以删除一组文件,那么我们不会让远程客户端直接访问这个文件,如果他愿意也可以删除 - 但只有我们必须有这个权限才能只做编程。所以我们的 asp.net 程序与连接和查看页面的用户有不同的权限,所以我们这里有两种用户。
关于c# - 无法使用 asp.net 在服务器端位置(C 盘或 D 盘)写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031524/