如何在c#中处理Web应用程序时从文件中删除只读属性。我可以通过使用此代码在Windows应用程序上执行此操作。
FileInfo file = new FileInfo(@"D:\Test\Sample.zip");
if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
file.IsReadOnly = false;
}
我在Web应用程序中尝试的代码相同,它不会删除只读属性。请帮我解决。
答案 0 :(得分:1)
如果应用程序写入磁盘,运行Web应用程序的应用程序池标识将需要写访问权限。您需要设置应用程序池,您需要选择IIS AppPool \ YourApplicationPool,其中YourApplicationPool是您新创建的应用程序池而不是NT Authority \ Network Service。您可以找到有关here和here的更多信息。
答案 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可以访问网络应用程序。