在处理Web应用程序时,从文件中删除只读属性

时间:2013-06-12 07:20:10

标签: c# attributes

如何在c#中处理Web应用程序时从文件中删除只读属性。我可以通过使用此代码在Windows应用程序上执行此操作。

FileInfo file = new FileInfo(@"D:\Test\Sample.zip");
if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
    file.IsReadOnly = false;
}

我在Web应用程序中尝试的代码相同,它不会删除只读属性。请帮我解决。

2 个答案:

答案 0 :(得分:1)

如果应用程序写入磁盘,运行Web应用程序的应用程序池标识将需要写访问权限。您需要设置应用程序池,您需要选择IIS AppPool \ YourApplicationPool,其中YourApplicationPool是您新创建的应用程序池而不是NT Authority \ Network Service。您可以找到有关herehere的更多信息。

答案 1 :(得分:0)

以下示例通过将Archive和Hidden属性应用于文件来演示GetAttributes和SetAttributes方法。

来自http://msdn.microsoft.com/en-us/library/system.io.file.setattributes.aspx

 using System;
 using System.IO;
 using System.Text;

class Test 
{
public static void Main() 
{
    string path = @"c:\temp\MyTest.txt";

    // Create the file if it exists. 
    if (!File.Exists(path)) 
    {
        File.Create(path);
    }

    FileAttributes attributes = File.GetAttributes(path);

    if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
    {
        // Show the file.
        attributes = RemoveAttribute(attributes, FileAttributes.Hidden);
        File.SetAttributes(path, attributes);
        Console.WriteLine("The {0} file is no longer hidden.", path);
    } 
    else 
    {
        // Hide the file.
        File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
        Console.WriteLine("The {0} file is now hidden.", path);
    }
}

private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
{
    return attributes & ~attributesToRemove;
}
}

如果您需要更多帮助,请与我联系。

修改

还要确保网络服务和IUSR可以访问网络应用程序。