none
permissoes de gravar arquivo no iis 7.5 RRS feed

  • Pergunta

  • Tenho um site onde tive que trocar de servidor e coloquei em um windows 7 server com iis 7.5, tenho uma página onde gravo uns arquivos em uma pasta no servidor e agora ela não está gravando acho que é permissão, alguem sabe como resolver isso ?

    Junior

    terça-feira, 23 de abril de 2013 14:01

Todas as Respostas

  • Junior,

    No Application Pool da sua aplicação, você utiliza algum usuário específico como "Identidade" ou o padrão ApplicationPoolIdentity? A autenticação Anônima está habilitada para a sua aplicação (caso sim, qual o usuário associado a ela o do pool IIS ou outro)?

    Algumas possíveis saídas:

    A forma mais simples, porém, mais perigosa seria você dar permissão de escrita e leitura para todos os usuários a esta pasta, porém, ela poderia ficar exposta.

    Você pode tentar dar permissões de leitura/escrita nesta pasta para o usuário do IIS;

    Se nenhuma destas atender, avise que tento ajudar com outras.

    Abraços.

    terça-feira, 23 de abril de 2013 15:48
  • Diego onde eu vejo no pool de aplicativos qual usuário estou usando ? sei que estu usando autenticação anonima.


    Junior

    terça-feira, 23 de abril de 2013 16:23
  • Clica no Pool, acessa configurações avançadas e procura por Identidade.

    Tentou dar permissões na pasta para o usuário do IIS já?

    Outra questão... o acesso anônimo está apontando para o usuário do IIS (IUSR) (na aplicação procure por autenticação, selecione anônimo e editar)?
    • Editado Diego Cotini terça-feira, 23 de abril de 2013 16:50
    terça-feira, 23 de abril de 2013 16:47
  • no meu pool tenho vário sites, nesse especificamente que esta me dando problema em Identidade tem :

    LocalService

    Já dei permissoes ao uisr em tudo e nada e o interessante é que mapeie a minha maquina e ele grava o arquivo e gera os dados, e no servidor no máximo ele cria o arquivo mais fica zerado.


    Junior

    terça-feira, 23 de abril de 2013 16:52
  • Certo... mas se ele está no mínimo criando o arquivo, é de se esperar que permissão de escrita ele tem...

    Você consegue garantir que o problema é na gravação do arquivo e não em um fluxo posterior, cujos privilégios do LocalService são suficientes?

    Tenta mudar o pool desta aplicação que está dando problema para LocalSystem (que tem permissão total) para fazer um teste.

    terça-feira, 23 de abril de 2013 17:00
  • Mudei e continua do mesmo jeito, ele grava o arquivo texto mais cria zerado. Mudei o pool para LocalSystem.


    Junior


    • Editado Junior_luiz terça-feira, 23 de abril de 2013 17:20
    terça-feira, 23 de abril de 2013 17:19
  • Chega a estourar alguma exception? Caso sim, em qual momento? Tem como postar o código com o comportamento errado?
    terça-feira, 23 de abril de 2013 17:42
  • Diego não gera exception fica parado apenas é uma pagina onde faço um select no banco e do result crio um arquivo com extensão txt e vou inserindo as linhas do result do select dentro dele(arquivo).

    O usuário anonimo está realmente IUSR eu já dei permissão a esse usuário até no inetpub como parceira e mesmo assim nada.

    Agora nem o arquivo está criando.

    O que me deixa mais intrigado é que localmente ele cria o arquivo lá no servidor na pasta que eu quero, mais qdo publico o projeto ele não cria.


    Junior

    terça-feira, 23 de abril de 2013 18:41
  • É uma pasta local no servidor ou mapeada em outro servidor? Já testou dando permissões para todos (everyone)?
    terça-feira, 23 de abril de 2013 18:44
  • Diego o nome do usuário do iis não é iusr_<nomedamaquina> ?

    Junior

    terça-feira, 23 de abril de 2013 18:44
  • Esse nome varia muito dependendo da versão do IIS. Na versão que tenho aqui (7.5) o usuário é IIS_IUSRS (local).

    Então fica Nome_da_Maquina\IIS_IUSRS.

    terça-feira, 23 de abril de 2013 18:59
  • Onde eu identifico esse nome ?


    Junior

    terça-feira, 23 de abril de 2013 19:02
  • Iniciar, botão direito em computador, propriedades.

    Lá terá o nome do computador.

    Quando procurar o usuário do IIS para  dar permissão você terá que pesquisá-lo na máquina (locais... escolha seu servidor).

    Acho que entendi errado a sua pergunta... vc quer saber o nome o usuário IIS, certo? Creio que terá que pesquisar... Se for o da versão 7.5 pode usar o que passei anteriormente.
    • Editado Diego Cotini terça-feira, 23 de abril de 2013 19:34
    terça-feira, 23 de abril de 2013 19:32
  • Junior, já utilizei um identity como LocalSystem para poder utilizar recursos que as outras não permitiam (como acessar e matar processos), para outros casos, como acesso de leitura e gravação em pastas nunca precisei.

    No caso que citei acima, ainda tive que ir na aplicação, editar o usuário anônimo e dizer que ele teria as credenciais do Application Pool.

    Estou achando estranho você precisar fazer isso no seu caso, mas vale tentar. Geralmente, bastaria o usuário do IIS ter as permissões na pasta.

    Duas perguntas que ficaram pendentes de respostas: 

    - Você já tentou dar permissão total nesta pasta para todos (everyone)?

    - A sua aplicação está tentando gravar em uma pasta no próprio servidor ou compartilhada em outro?

    Se puder, posta o código que está com problema, para que possa estudá-lo também.

    Abraços e boa sorte.


    • Editado Diego Cotini quarta-feira, 24 de abril de 2013 16:27
    terça-feira, 23 de abril de 2013 20:27
  • Diego depois de muito verificar, o problema não é de permissão, pois nessa página faço uma conexão ao oracle e é de o result que trago, comentei o for que faço no result da consulta e coloquei para gravar uma informação fixa dentro do arquivo e ele criou o arquivo com a informação, por isso que eu disse anteriormente que ele gravava o arquivo mais nao tinha nada dentro dele.

    Meu problema é como acessar o oracle 64x no windows 2008 server.

     

    Junior

    quarta-feira, 24 de abril de 2013 14:20
  • Certo... mas se ele está no mínimo criando o arquivo, é de se esperar que permissão de escrita ele tem...

    Você consegue garantir que o problema é na gravação do arquivo e não em um fluxo posterior, cujos privilégios do LocalService são suficientes?

    Tenta mudar o pool desta aplicação que está dando problema para LocalSystem (que tem permissão total) para fazer um teste.

    Legal Junior,

    Na citação acima até mencionei essa questão de ser outro problema, pois, estava muito esquisito você conseguir criar o arquivo se não tivesse permissão de escrita.

    Achei que era falta de algum outro privilégio de alguma operação que estava realizando.

    Bom, um problema a menos então (ou um novo agora)! 

    Nessa questão do Oracle não serei de muita utilidade.

    Abraços.

    quarta-feira, 24 de abril de 2013 16:27
  • Ele nao gera uma exception já tentei de tudo, nao queria formatar o servidor e colocar o windows 2008 server 32 bits pq ele não reconhece o total de memória que tem o servidor por isso coloquei o 64 bits, mais acho que como esse meu sistema é na framework 3.5 acho que ela não tem provider para o oracle 64 bits. Já tentei inúmeras strings de conexão e nenhuma dá certo.

    No meu micro executa pq o windows é 32 bits.


    Junior

    quarta-feira, 24 de abril de 2013 19:39
  • Situação complicada Junior... 

    Mas você já analisou a viabilidade e impacto da atualização do framework no sistema?

    quinta-feira, 25 de abril de 2013 12:06
  • Diego achei a solução coloquei o oci.dll na pasta bin do projeto no servidor e tudo funcionou, claro que instalei o oracle 10g também.

    Junior

    quinta-feira, 25 de abril de 2013 13:34