c# - 覆盖文件权限 - C#/ASP.NET

标签 c# asp.net file

在我的应用程序中实现 XML 文件读取/写入时,我发现当我调用 XElement.Save("myfile.xml") 时,它将覆盖现有文件。

此行为是在 C#/ASP.NET 中保存文件的所有方法的默认行为还是取决于授予 ASP.NET 的权限?

如果我的应用程序将由不同的人部署在不同的托管设置上,对于在读取/写入文件时可能对我的应用程序施加的限制(如果有),我应该考虑哪些因素?

某个服务器设置是否只允许我在删除旧文件时​​覆盖现有文件?

当保存我的应用程序稍后将使用的文件时,App_Data 是最安全的文件夹吗?

最佳答案

默认行为问题实际上是与权限问题不同的问题...

对于将数据保存到文件的 .NET Framework 方法中的覆盖默认行为,没有单一的指导原则。对于您调用的任何给定方法,您应该调查默认行为。如果您不喜欢它,可以寻找解决方法。例如,XmlDocument.Save 方法有一个重载,它接受流而不是文件路径。您可以通过提供使用 FileMode 而不是 Create(这是 XmlDocument.Save(string) 重载所使用的)打开的 FileStream 来使用它。

无论方法尝试使用何种文件创建和/或修改方法,除非满足以下两个条件,否则文件修改尝试将失败(引发异常):

  1. 运行代码的用户帐户必须有权创建/删除/修改(如代码所尝试的那样)文件。
  2. 代码本身必须具有足够的代码访问安全权限才能进行文件修改操作。

关于c# - 覆盖文件权限 - C#/ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1651539/

相关文章:

c# - 当使用 "using"时,我们是否有任何情况可以包含 catch block ,我们可以在其中处理对象而不做任何其他事情

C#、EF : Select from table using list of tuples

c# - "Errors During Preprocessing"在 ASP.NET 性能计数器中非零

java - 为什么我既不能删除也不能重命名该文件?

c# - WPF 嵌套 ListViews 滚动行为

c# - gridview 标题模板中的 foreach 复选框

asp.net - 脚本管理器控件实际上有什么作用?

linux - 在 Linux/Unix 中对文件行进行数字排序

c - 我写入文件但更改未保存

c# - 无法将类型 'System.String' 转换为类型 'System.Object'。 LINQ to Entities 仅支持转换实体数据模型基元类型