0

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

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

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

4

2 回答 2

1

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

于 2013-06-12T08:17:38.627 回答
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 可以访问网络应用程序。

于 2013-06-12T07:23:51.727 回答