Pergunta

Eu estou tentando algo muito simples, mas estou tendo dores de cabeça com ele. Tenho certeza de que tudo o que temos aqui é um permissões emitir eu não sei como resolver, mas posso estar errado.

Aqui está meu cenário ... Eu tenho 3 servidores ...

  1. Servidor A - Web Server (Windows 2003) - Acesso anônimo habilitado
  2. Servidor B - Red 5 Media Server
  3. Servidor C - NAS

O website no servidor A permite a gravação / upload de vídeo para o servidor B, onde o vídeo é processado / decodificado. O trabalho de um Cron no servidor B, em seguida, move os vídeos através de servidor C para armazenamento.

Os usuários podem então ver os seus vídeos a partir de servidor A via um virtual isso é diretório foi criado em IIS que aponta para Servidor C e conecta-se como uma conta de usuário de domínio.

Eu preciso de alguma forma utilizar o sistema de ficheiros ASP objeto para obter o tamanho de uma pasta no servidor C que contém os vídeos.

Eu mapeou a pasta pai da pasta no servidor C onde os vídeos são armazenados para uma letra de unidade no servidor A usando um caminho UNC (\ servername \ vídeos).

Eu tentei usar folderExists do FileSystemObject () método para fins de depuração e ele retorna false se eu passar na letra da unidade mapeada ou um caminho UNC. Ele dá um caminho não encontrou o erro. Só para ter certeza que fiz um response.write do caminho que está sendo passado para os folderExists método () e é o caminho correto. Tudo isso leva-me a acreditar que este é realmente um problema de permissões que eu só não sei como resolver.

Obrigado, Ryan

Foi útil?

Solução

Unidades de rede mapeadas não servem para você em ASP no IIS6 uma vez que são parte de um perfil de usuário. Os perfis de usuário não são totalmente carregado em serviços como IIS6.

Assumindo um ambiente ASP puro (você não pode instalar outras DLLs etc), então você vai precisar do usuário anônimo para ter acesso ao compartilhamento de rede onde os vídeos são armazenados e usar o caminho UNC.

Agora, normalmente a conta IUSR é conta de convidado local que não tem acesso à rede. Você vai precisar para criar um usuário no domínio que o NAS pertence e especificar que as credenciais de usuários como a conta de usuário anônimo para as páginas que precisa fazer a sua tarefa "Get Size" (você não precisa mudar de utilizador anónimo para o conjunto aplicação).

O precedente assume Servidor A é um membro do mesmo domínio como servidor C. Se não, então você precisa criar usuário no domínio do Servidor A pertence assim que os espelhos aquele no servidor C incluindo a sua senha (ou salto através de aros de relação de confiança).

Com isso em lugar que você pode ir em frente e uso FileSystemObject.

Outras dicas

Você precisa trabalhar com a coleção FSO.Drives para chegar ao seu NAS. Ter um olhar para este artigo (apenas pesquisei mas parece ok):

http://www.stardeveloper.com/articles/display .html? article = 2001050301 & page = 1

Tente executar isso e ver se você unidades estão disponíveis, deve ajudar a diminuir se o seu problema de permissões A

<%

Dim fso
Set fso = Server.CreateObject("Scripting.FileSystemObject")

Dim drives
Set drives = fso.Drives

Dim isReady

For Each drive in drives
    isReady = drive.IsReady

    If isReady Then
        Response.Write "DriveLetter: " & drive.DriveLetter & "<br>"
        Response.Write "Path: " & drive.Path & "<br>"
        Response.Write "FileSytem: " & drive.FileSystem & "<br>"
        Response.Write "TotalSize: " & drive.TotalSize & "<br>"
        Response.Write "FreeSpace: " & drive.FreeSpace & "<br>"
    Else
        Response.Write "Driv Letter: " & drive.DriveLetter & "<br>"
        Response.Write drive.Path & "<br>"
        Response.Write "No other information available."
    End If
Next

%>

Tenha um jogo com isso e ver se você ainda está tendo problemas, se isso vamos cavar um pouco mais:)

Não sei se isso é a coisa certa a fazer, mas para remediar esta situação eu tinha que mapear a unidade de rede via ASP (como o IUSR_machine) conta como assim ...

dim objNetwork

Set objNetwork = CreateObject("WScript.Network") 
objNetwork.MapNetworkDrive "X:", "UNC path", "profile", "user", "password"

objNetwork.RemoveNetworkDrive "X:"
set objNetwork = nothing

Então eu era capaz de acessar a letra da unidade mapeada (X, neste caso) através do FileSystemObject.

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