如何在c#中处理web应用程序时从文件中删除只读属性。同样,我也可以在windows应用程序上这样做,通过以下代码:
FileInfo file = new FileInfo(@"D:TestSample.zip");
if ((file.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
file.IsReadOnly = false;
}
相同的代码我在web应用程序中尝试过,它没有删除只读属性。请帮我解决一下。
如果应用程序写入磁盘,运行web应用程序的应用程序池标识将需要写访问。你需要设置你的应用程序池,你需要选择IIS AppPoolYourApplicationPool,其中YourApplicationPool是你新创建的应用程序池,而不是NT AuthorityNetwork Service。你可以在这里和这里找到更多信息
下面的示例通过对文件应用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:tempMyTest.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可以访问web应用程序。