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

时间:2012-06-14 10:50:44

标签: c# asp.net c#-4.0 iis

我在我的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:\驱动器中编写文本文件...

4 个答案:

答案 0 :(得分:3)

显而易见,您需要能够在磁盘上的任何位置创建/写入/删除等文件。

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

更新

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

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

检查Checking and Setting up the Correct Permissions on the IIS Server权限

找到你的用户并允许它写。