2012-11-28 3 views
0

명령 줄에서 제대로 작동합니다. net use T : \ 123.45.67.89 \ TEST mytestuser/user : MYTESTUSER드라이브를 매핑 할 때 asp.net에서 '로컬 장치 이름이 이미 사용 중'인 이유는 무엇입니까?

그러나 다음 코드로, 다음과 같은 오류와 예외는 항상 슬로우되는, asp.net을 사용 : 내가 먼저 모든 드라이브에서 분리 시도 드라이브

를 매핑 할 때 '로컬 장치 이름이 이미 사용 중입니다' 다른 드라이브 문자로 매핑. 나는 다른 서버에서이 수행했으며, 에 다른 서버

문제는 드라이브 문자로 확실히인가?

temp = MapDrive("T", "\\123.45.67.89\TEST", "MYTESTUSER", "mytestuser") 


Public Shared Function MapDrive(ByVal DriveLetter As String, ByVal Path As String, ByVal Username As String, ByVal Password As String) As Boolean 


    Dim ReturnValue As Boolean = False 

    Dim p As New System.Diagnostics.Process() 
    p.StartInfo.UseShellExecute = False 
    p.StartInfo.CreateNoWindow = True 
    p.StartInfo.RedirectStandardError = True 
    p.StartInfo.RedirectStandardOutput = True 
    p.StartInfo.FileName = "net.exe" 
    p.StartInfo.Arguments = " use " & DriveLetter & ": " & Path & " /user:" & Username & " " & Password & " /persistent:yes" 
    p.Start() 
    p.WaitForExit() 
    Dim ErrorMessage As String = p.StandardError.ReadToEnd() 
    Dim OuputMessage As String = p.StandardOutput.ReadToEnd() 
    Dim StoreFile As System.IO.Directory 
    Dim Files As String() 
    Dim File As String 


If ErrorMessage.Length > 0 Then 
     Throw New Exception("Error:" & ErrorMessage) 

    Else 
     ReturnValue = True 
    End If 

    Files = StoreFile.GetFiles("T:\FINDTHIS\", "*") 


    For Each File In Files 

     HttpContext.Current.Trace.Warn(File) 
    Next 


    Return ReturnValue 
End Function 
+1

왜 ASP.NET에서 드라이브를 매핑하고 있습니까? – jrummell

+0

나는 UNC를 사용하기 시작했다. 그러나 코드에서 UNC에 대한 연결을 제한하려고 시도했을 때 도메인을 요구할 때 어려움에 처하게되었고 파일 서버는 도메인이 아닌 작업 그룹에 있습니다. 그래서 드라이브 매핑이 차선책으로 보입니다. – beckyp

답변

0

net 명령을 실행하는 사용자에게 특정 드라이브를 매핑되지?

asp.net 페이지는 일반적으로 현재 사용자와 다른 ID로 실행됩니다. 즉, 처음 코드를 실행할 때 코드가 네트워크 경로를 성공적으로 매핑 할 수 있습니다. 그런 다음 두 번째 실행하면 오류가 발생합니다. 드라이브가 사용자의 신원을 통해 매핑되지 이후

하지만 당신은

은 다음 또한있다 (이 아래 cmd 창 결국 실행) 당신의 cmd 창에 그 편지에 대한 매핑을 삭제 헛되이 찾고있다 net 명령을 실행하는 데 필요한 권한. 다른 오류가 발생했을 수 있습니다.

+0

CyberDude에게 제안 해 주셔서 감사합니다. net 명령을 실행할 때 사용자와 관련이 있다고 생각합니다. 결국이 일을 포기하고 web.config 파일에서 UNC를 사용했습니다. – beckyp