2010-01-05 3 views
1

나는 아주 간단한 것을 시도하고 있지만 두통이 있습니다. 나는 내가 여기있는 모든 권한을 문제 해결 방법을 모르지만 틀릴 수 있다고 확신한다. 웹 서버 (2003 윈도우) - - 익명 액세스 사용 클래식 ASP를 통해 원격 폴더의 크기를 얻는 것

  • 서버 B - 레드 5 미디어 서버
  • 다음

    내가 3 개 서버 ...

    1. 서버 A가 내 시나리오 ... 입니다
    2. 서버 C - NAS

    서버 A의 웹 사이트에서는 비디오를 처리/코드 변환 된 서버 B에 녹화/업로드 할 수 있습니다. 서버 B에서 Cron 작업을 수행 한 다음 비디오를 서버 C로 이동하여 저장합니다.

    사용자는 Server C를 가리키는 IIS에 설정된 가상 디렉터리를 통해 서버 A에서 비디오를 시청하고 도메인 사용자 계정으로 연결할 수 있습니다.

    ASP 파일 시스템 개체를 사용하여 비디오가 포함 된 서버 C의 폴더 크기를 얻는 방법이 필요합니다.

    UNC 경로 (\ servername \ videos)를 사용하여 비디오가 저장된 서버 C의 폴더의 상위 폴더를 서버 A의 드라이브 문자에 매핑했습니다.

    FileSystemObject의 folderExists() 메서드를 사용하여 디버깅을 시도했지만 매핑 된 문자 드라이브 나 UNC 경로를 전달하면 false를 반환합니다. 경로를 찾을 수 없습니다 오류가 발생합니다. 방금 folderExists() 메소드에 전달되는 경로의 response.write를 작성했는지 그리고 올바른 경로인지 확인하십시오. 이 모든 것들이 제가 이것이 해결 방법을 모르는 사용 권한 문제라고 믿게합니다.

    덕분에, 라이언

    답변

    2

    매핑 된 네트워크 드라이브는 IIS6의 ASP에서 사용자 프로필의 일부이므로 사용자에게 유용하지 않습니다. 사용자 프로필은 IIS6과 같은 서비스에 완전히로드되지 않습니다.

    순수 ASP 환경 (다른 dll 등을 설치할 수 없음)을 가정하면 비디오가 저장되어있는 네트워크 공유에 액세스하고 UNC 경로를 사용하려면 익명 사용자가 필요합니다.

    일반적으로 IUSR 계정은 네트워크에 액세스 할 수없는 로컬 게스트 계정입니다. NAS가 속한 도메인에 사용자를 생성하고 "Get Size"작업을 수행해야하는 페이지에 대한 익명 사용자 계정으로 사용자 자격 증명을 지정해야합니다 (전체적으로 익명 사용자를 변경할 필요가 없습니다. 신청).

    위의 내용은 서버 A가 서버 C와 동일한 도메인의 구성원이라고 가정합니다. 서버 A가 속한 도메인에서도 사용자를 생성해야하며 그렇지 않은 경우 서버 C의 암호 점프 신뢰 관계 농구).

    그 자리에 당신은 가서 FileSystemObject을 사용할 수 있습니다.

    +0

    확실히 맞습니다. 내가 말한 문제는 생각하지 않았다. 당신의 대답은 트릭을했습니다. 고맙습니다. – Ryan

    1

    당신은 당신의 NAS에 도착하기 위해 FSO.Drives 수집 작업을해야합니다. 이 문서에서보세요 (그냥 봤지만 괜찮아 보인다) :

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

    이 실행하고 드라이브를 사용할 수있는 경우, 좁히는 데 도움이 있어야 보는 시도 자사의 권한 문제

    <% 
    
    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 
    
    %> 
    
    경우

    그걸로 놀아 보시고 여전히 문제가 있는지 확인하십시오. 조금만 더 자세히 살펴 보겠습니다.

    +0

    감사합니다. 피트. 이 코드를 실행 한 후에는 로컬 드라이브 만 인쇄 된 목록에 나타납니다. ELSE 절에서 정보를 얻지도 않습니다. 매핑 된 드라이브는 fso.Drives 호출에 의해 반환 된 드라이브 컬렉션에도 나타나지 않습니다. 추측 할 수없는 오류가 발생하는 이유를 설명합니다. – Ryan

    +0

    흠, 음, 고맙게도 FSO를 통해 재생해야하는 모든 드라이브가 있습니다. 부모 폴더에 대한 IUSR 액세스 권한을 부여 할 수 있고 UNC와 함께 사용할 수 있는지 궁금한가요? 나는 UNC가 허용되지 않는다는 것을 두려워한다. 그럴 가치가 있니? else 절은 드라이브가 사용 중이거나 준비가 안된 경우에만 작동합니다. 즉, 플로피 드라이브에 디스크가 없으므로 기억하십시오. :) –

    0

    이것이 올바른 일인 지 잘 모르겠지만이를 해결하려면 네트워크를 매핑해야합니다. ASP (IUSR_machine) 계정을 통한 드라이브 l ike so ...

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

    그런 다음 FileSystemObject를 통해 매핑 된 드라이브 문자 (이 경우 X)에 액세스 할 수있었습니다.

    +0

    이것은 sysadmin이 다른 어떤 것에 대해서 X 드라이브를 사용하지 않는다는 것을 제외하면 위험합니다. (관리 가능한 것 같습니다) 서버상의 여러 요청이이 코드를 실행하면 어떻게됩니까? 지도 시도가 실패하거나 X가 조기에 매핑 해제됩니다. – AnthonyWJones

    관련 문제