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

标签 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:\ 驱动器中写入文本文件...

最佳答案

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

这里的提示是您的 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/

相关文章:

在 Base 类中声明的 C# 接口(interface)方法不需要在 Derived 类中再次实现

JQUERY UI 主题 css 未应用于 ASP.NET MVC 4 Web 项目

c# - 未满18岁如何不注册

pdf - 如何在 C# 中打开 pdf 等文件 "from"一个 windows 窗体应用程序

c# - 根据从 SFTP 修改的日期下载文件

c# - 找不到引用组件 Microsoft.CSharp

c# - 是否可以编译一个C#程序在Android手机上运行?

c# - 按 Entity Framework 中的子表排序

c# - asp :panel in asp.net mvc 的替代方案

parameters - 具有可选参数的冲突重载方法