些細なエラー、時間はファイルを削除するのと同じプロセスを実行する別の時間の通常の処理を実行します。私はこのエラーを受け取ります。パスへのアクセスが拒否されました。
これはIIS経由でアクセスされているWebサイトフォルダの更新プログラムで、ユーザーがWebサイトにログオンしている間にこのプロセスが発生します。
何ができますか?
Exception.Message =
パスへのアクセスは 'W:\のinetpub \ wwwrootの\サイト\ Recursos \ CSSの\フォント\ roboto-light_0-webfont.ttf' が拒否されます。
メッセージ:「W:¥inetpub¥wwwroot¥site¥Recursos¥Css¥Fonts¥roboto-light_0-webfont.ttf」パスへのアクセスが拒否されました。 StackTrace:System.IO.__でError.WinIOError(Int32 errorCode、String maybeFullPath)をSystem.IO.File.SetAttributes(String path、FileAttributes fileAttributes)で呼び出すと、次のエラーメッセージが表示されます。 d:¥WOOBA_WORKSPACE_2010¥WoobaWebDesk¥Source¥Development¥aspWoobaWebDesk¥サービスプロバイダユーザ名¥Utilitarios¥Pacote.cs:d:¥WOOBA_WORKSPACE_2010¥WoobaWebDesk内のサービスプロバイダの作業行.Pacote.DeleteDirectory(String target_dir、List 1 Ignorar, Boolean deletarRaiz) in d:\WOOBA_WORKSPACE_2010\WoobaWebDesk\Source\Development\aspWoobaWebDesk\ServicoAtualizador\Utilitarios\Pacote.cs:line 37 at ServicoAtualizador.Utilitarios.Pacote.DeleteDirectory(String target_dir, List
1 Ignorar、Boolean deletarRaiz)の行46 \ WOOBA_WORKSPACE_2010 \ WoobaWebDesk \ Source \ Development \ aspWoobaWebDesk \ ServicoAtualizador \ ServicePattern.Utilitarios.Pacote.DeleteDirectory(文字列target_dir、リスト1 Ignorar, Boolean deletarRaiz) in d:\WOOBA_WORKSPACE_2010\WoobaWebDesk\Source\Development\aspWoobaWebDesk\ServicoAtualizador\Utilitarios\Pacote.cs:line 37 at ServicoAtualizador.Processamento.ProcessarAtualizacao(String Aplicacao, DirectoryItem arquivo, AtualizacaoItemProduto itemProduto, AtualizacaoItem item, List
1 colecao)で、ソース\開発\ aspWoobaWebDesk \サービスプロバイダー\ Utilitarios \ Pacote.cs: Processamento.cs:227行ソース:mscorlib
CODE:
public static void DeleteDirectory(string target_dir, List<string> Ignorar = null, bool deletarRaiz = true)
{
string[] files = Directory.GetFiles(target_dir);
string[] dirs = Directory.GetDirectories(target_dir);
DeletarArquivos(Ignorar, files);
foreach (string dir in dirs)
{
DeleteDirectory(dir);
}
if (deletarRaiz)
{
int contador = 0;
while (Directory.GetFiles(target_dir).Any()) // prevent directory is not empty
{
System.Threading.Thread.Sleep(200);
DeletarArquivos(Ignorar, Directory.GetFiles(target_dir));
contador++;
if (contador >= 3)
throw new ArgumentException("Não possível deletar os arquivos, diretório:" + target_dir);
}
Directory.Delete(target_dir, false);
}
}
private static void DeletarArquivos(List<string> Ignorar, string[] files)
{
foreach (string file in files)
{
FileInfo Info = new FileInfo(file);
if (Ignorar != null)
{
if (Ignorar.Any(o => o.Equals(Info.Name, StringComparison.OrdinalIgnoreCase)))
continue;
}
if (Info.IsReadOnly)
Info.IsReadOnly = false;
var attr = File.GetAttributes(file);
if ((attr & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
File.SetAttributes(file, attr^FileAttributes.ReadOnly);
}
File.SetAttributes(file, FileAttributes.Normal); //...error here
File.Delete(file);
}
}