无法使用 asp.net 在服务器端位置(C 盘或 D 盘)写入文件

本文关键字:盘或 文件 位置 asp net 服务器端 | 更新日期: 2023-09-27 18:37:14

我正在为我的 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 在服务器端位置(C 盘或 D 盘)写入文件

很明显

,您需要权限才能在磁盘上的任何位置创建/写入/删除文件等。

此处的提示是,asp.net 应用程序在一个池下运行,并且池在特定用户下运行 - 此用户必须具有正确的权限。

更新

有两种用户在 asp.net 页面上一起"运行"。一个与IIS的许可有关,这就是KBoek所说的。例如,用户从 IIS 请求页面 ,并使用用户 A 查看是否可以读取此文件并将其发送回 Web 或具有运行权限的 IIS。

第二种类型的用户是池。从 IIS 有权运行池的那一刻起,使用池用户运行它。因此,如果文件要由池读取,则池必须具有读取权限,而不是 iis。

为什么这里有两种用户。因为一个代表看到数据的用户,另一个代表我们所做的编程。

例如,如果我们有一个可以删除一组文件的自动化工具,那么我们不会赢得远程客户端直接访问此文件,如果他愿意,可能会删除 - 但只有我们必须拥有此权限才能仅在编程上执行。因此,我们的 asp.net 程序与连接和查看页面的用户具有不同的权限,因此我们这里有两种用户。

服务器进程在特定用户(取决于您的 IIS 版本)下运行,该用户必须对要保存文件的文件夹具有写入访问权限。告诉我你的IIS版本,然后给我一分钟,我会为你查找用户名。

为了写入某个位置,Web 服务器用户必须具有对该位置的写入访问权限。您必须为此设置文件夹权限才能工作。确切的用户取决于您的 IIS 版本。

首先

我会使用Server.Mappath("C:''sample.txt"); .

其次,异常说明了一切,尝试在服务器中写入文件的用户没有写入权限。

检查在 IIS 服务器上检查和设置正确的权限以获取权限

找到您的用户并允许其写入。