Estou criando diretórios e gravando arquivos em uma pasta compartilhada em meu aplicativo da Web que está sendo hospedado no Windows Server 2008. Estou executando o pool de aplicativos com uma identidade de ApplicationPoolIdentity.
Para ter uma idéia da minha configuração até o momento, defini permissões para a raiz do diretório raiz do meu aplicativo Web para dois usuários diferentes: "IUSR" e "IIS APPPOOL \ MYPOOL". Estou usando o nome "MYPOOL" como o nome do meu pool de aplicativos, por isso é fácil fazer referência.
O aplicativo não pode modificar e gravar em uma pasta compartilhada. Cliquei com o botão direito na pasta compartilhada na qual estou criando diretórios e gravando e cliquei na guia "Segurança". Então eu cliquei em "Editar". Em objetos, eu verifiquei "Computador". Então, em LOCATION, tentei a máquina / servidor executando meu aplicativo da web. Eu não consegui encontrar meu usuário "MYPOOL", no entanto, sob os usuários. Tentei seguir este link, mas não foi muito completo. Eu não sei qual usuário usar. Eu continuo a receber uma exceção System.IO porque não tem permissões. Depois que eu souber qual usuário usar, terei que conceder permissões de "Modificar" ao diretório "ExportPath".
Isso não funcionou para mim:
link
Para um teste rápido, criei uma página fictícia chamada FilePermissionsTest.aspx e coloquei algum código para gravar um arquivo para criar um diretório e gravar um arquivo no meu evento Page_Load do código por trás. Mas eu não cheguei longe o suficiente para testá-lo porque ele não vai escrever o arquivo.
...
<div>
Check to see if the file "_File_Permissions_Test.txt" was written to <% Response.Write(Data.ConfigurationHelper.ValueFromConfiguration("ExportPath", Nothing))%>
</div>
...
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim exportPath As String = Data.ConfigurationHelper.ValueFromConfiguration("ExportPath", Nothing)
If exportPath = String.Empty Then Return
Dim exportDirectory As DirectoryInfo = Directory.CreateDirectory(exportPath)
Dim writer As StreamWriter = File.CreateText(Path.Combine(exportDirectory.FullName, "_File_Permissions_Test.txt"))
writer.WriteLine("TESTING... " + DateTime.Now().ToString)
writer.Flush()
writer.Close()
End Sub