Pergunta

Eu tenho um conjunto de serviços do Windows para copiar arquivos de um diretório local para um compartilhamento de samba.

As Ligações de serviços através de um caminho UNC para o servidor (ou seja, \ remoteserver \ shareddir).

Eu logado como o usuário sob a qual o serviço está sendo executado, e foi capaz de ambos os arquivos de cópia e criar arquivos no compartilhamento de samba, usando o caminho UNC.

No entanto, ao executar o serviço que eu estou recebendo io exceções que sugerem um erro de login. Eu tenho que correr monitor de processo em que a caixa, observando o serviço e eu posso vê-lo encontrar o caminho UNC mas recebendo um erro de login ao tentar gravação para o compartilhamento.

Esta é usando plain vanilla .net System.IO.File.Copy chamada.

Eu não entendo os erros, como quando logado sob o mesmo usuário eu sou capaz de copiar e criar arquivos no compartilhamento.

Todas as idéias?

Editar: texto de exceção

Erro no loop de processamento principal (DoWork ()): Início de sessão falha: desconhecido nome de usuário ou senha inválida.

System.Exception: Erro em MyService.ProcessExportTransferfileDirectories e os valores: D: \ Export, \ RemoteServer \ intray, D: \ Export \ Arquivo ---> System.IO.IOException: Falha de logon: nome de usuário desconhecido ou senha incorreta.

at System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath) a System.IO .__ Error.WinIOError () a System.IO.File.Move (String sourceFileName, String destFileName)
em MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String sourceFolder, String TargetFolder, Cordas archiveFolder, String rootFolder, LogCategory logCategory, LogCounter logCounter) --- fim de interior rastreio da pilha excepção --- em MyService.Consumer.BusinessLogic.WmsFacade.MoveAndArchiveFile (String sourceFolder, String TargetFolder, Cordas archiveFolder, String rootFolder, LogCategory logCategory, LogCounter logCounter) a MyService.Consumer.BusinessLogic.WmsFacade.ProcessExportTransfer (IDictionary`2 fileDirectories) a MyService.Core.TimedWorkerProvider.DoWork ()

Foi útil?

Solução

Ele acabou sendo um problema de permissões -. Após a execução do serviço como um usuário diferente, que foi instalado no compartilhamento de samba funcionou sem problemas, copiando arquivos através

Ainda não entendo por que ao usar uma conta diferente eu poderia copiar / criar arquivos no compartilhamento usando o Windows Explorer, mas quando o serviço foi executado sob a mesma conta de que não poderia acessar o compartilhamento de todo: (

Outras dicas

Eu recomendaria mapeamento de uma unidade primeiro e depois fazer a cópia do arquivo para a unidade mapeada em vez da ação.

Você pode mapear uma unidade usando o comando NET utilização dos. Por exemplo:

System.Diagnostics.Process.Start("net", "use h: \remoteserver\shareddir /User:domian\me password")

Isso deve resolver quaisquer problemas de login.

Uma ferramenta muito útil na sua situação é processo de monitor . Basta executá-lo como administrador e adicionar o seguinte filtro:

Process Name is "your_process.exe" AND Operation is "CreateFile"

Você verá informações detalhadas sobre os arquivos de seu processo está tentando usar.

Como mencionado, quando eu entrar com o mesma conta que o serviço é execução como, eu não tenho problemas copiando de e para a criação de arquivos no compartilhamento. - Oded 1 min atrás

Você conceder a conta de usuário do serviço está sendo executado como permissões "Logon como Serviço" na política de segurança local ??

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top