2012-11-28 22 views
0

在命令行它工作正常: net USE T:\ 123.45.67.89 \測試mytestuser /用戶: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頁面通常以與當前用戶不同的身份運行。這意味着您的代碼在第一次運行時可能會成功映射網絡路徑。然後當你第二次運行它時,你會得到這個錯誤。

但你正在尋找白白刪除您cmd窗口那封信映射自駕車不是通過您的用戶身份映射(其下您的cmd窗口後,所有正在運行)

再就是也就是運行net命令所需的權限,儘管這可能會引發不同的錯誤。

+0

感謝您的建議Cyber​​Dude。我認爲這可能與運行net命令時用戶有關。 最後我放棄了這種做事的方式,並在web.config文件中使用了UNC。 – beckyp

相關問題