【问题标题】:cann't write a file in server side location(C drive or D drive)using asp.net?无法使用 asp.net 在服务器端位置(C 驱动器或 D 驱动器)写入文件?
【发布时间】:2012-06-14 10:50:44
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    更新

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-17
          • 1970-01-01
          • 2011-09-24
          相关资源
          最近更新 更多