DotNetZip: a criação de zip com C # problema permissões
-
03-07-2019 - |
Pergunta
Eu estou usando DotNetZip e tenho notado que eu estou recebendo problemas de permissão no Mac. Isto parece ocorrer somente quando eu uso disposição do conteúdo.
ou seja, se eu apenas salvar no disco
using (ZipFile zip = new ZipFile(@"C:\zip\temp.zip"))
{
// this works fine
}
mas se eu usar disposição do conteúdo como assim, no mac os permissões de usuário são negados (grupo todos é desmarcada)
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "filename=" + filename);
using (ZipFile zip = new ZipFile(Response.OutputStream))
{
//
}
Solução
Você pode tentar mudar o ApplicationType para "application / octet-stream". Acredite ou não, que fixou problemas para mim antes. Vale a pena um tiro de qualquer maneira.
A grande questão é como é que o arquivo que está sendo solicitado do lado do Mac? Se for um servidor web Windows, oferecendo-se o arquivo, o Windows não consegue definir as permissões no lado do cliente. Se é um navegador (Safari / Firefox) provavelmente eles estão apenas correndo nas configurações padrão. Então, sabendo o que está solicitando o arquivo do Mac poderia ajudar a obter a resposta certa.
Outras dicas
Pode haver várias razões para isso, mas o meu palpite é de que há um bug no âmbito do mac. Estar em um Mac Eu suponho que você está usando mono modo contato do grupo Mono e ver o que eles têm a dizer. Também eles têm uma boa href="http://www.go-mono.com/forums/" rel="nofollow noreferrer"> fórum ver o que eles têm a dizer.
Finalmente, se seus erros recebendo usando "content-disposition", então não use "content-disposition", e usar a forma como ele funciona.
Eu não sei se ele tem alguma coisa a ver com DotNetZip, mas existe uma versão mais recente da biblioteca para fora agora - v1.7. Ele faz a criptografia AES, ZIP64, um monte de outras coisas. E a versão v1.8 tem alguns recursos novos Seelctor, bem como um substituto para GZipStream.