1

我正在为我的 Web 应用程序使用 ASP.NET。我可以使用这种方法在服务器路径中写入一个文本文件Server.MapPath()。但我也想在不同的位置创建一个文本文件,比如C:\or 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:\驱动器中写入文本文件...

4

4 回答 4

3

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

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

更新

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

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

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

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

于 2012-06-14T10:53:47.250 回答
2

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

于 2012-06-14T10:53:16.610 回答
1

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

于 2012-06-14T10:54:29.497 回答
0

首先我会使用Server.Mappath("C:\\sample.txt");.

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

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

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

于 2012-06-14T10:59:07.380 回答