2012-10-04 60 views
1

我在這裏做了什麼錯?將文件從一臺服務器複製到另一臺時,設備未準備就緒

我檢查了變數,他們是他們應該做的是這樣的問題不存在。

我在這裏錯過了什麼嗎?爲什麼我會收到「設備未準備好」的例外情況?

碼 -

if (ddlPublisherServer.Text != ddlSubscriberServer.Text) 
{ 
    try 
    { 
     if (File.Exists("\\\\" + ddlSubscriberServer.Text + "\\SQLServerBackups\\" + txtSubscriberDatabaseName.Text + ".bak")) 
     { 
      File.Delete("\\\\" + ddlSubscriberServer.Text + "\\SQLServerBackups\\" + txtSubscriberDatabaseName.Text + ".bak"); 
     } 

     File.Copy(@"D:\SQLServerBackups\" + txtSubscriberDatabaseName.Text, "\\\\" + ddlSubscriberServer.Text + "\\SQLServerBackups\\" + txtSubscriberDatabaseName.Text + ".bak"); 
     } 
     catch (Exception ex) 
     { 
      ClientScript.RegisterStartupScript(GetType(), "Error!", "alert('" + ex.Message + "');", true); 
      Logger.LogError(ex.Source, ex.TargetSite.ToString(), ex.Message); 
      return; 
     } 
    } 
+0

我上傳了一張更好的照片,只是一秒鐘。 – Testifier

+1

如何上傳一些* code *代替? –

+0

你可以導航到Windows資源管理器中的文件路徑嗎? –

回答

5

的問題是你所訪問未映射的網絡位置。在訪問網絡位置時,您需要將其映射(如果您擁有權限,某些情況下會自動發生,但如果您沒有權限,則必須自行完成)。您有幾種選擇:

  1. 與映射網絡驅動器工作,並確保它總是映射(使用組策略或啓動腳本等)
  2. 使用的Process.Start運行「net use」命令(開cmd,鍵入「淨使用」,看看你需要給予什麼)。例如:Process.Start("c:\\windows\\system32\\net.exe", "use \\\\servername\\location /user:domain\\username password");
  3. 在嘗試訪問網絡位置之前,在您的代碼中使用模擬模擬具有足夠權限的用戶。
+0

什麼是最好的選擇,你能給我一個例子? – Testifier

+0

你是在工作組還是域名?如果您位於域(活動目錄)環境中,並且該應用程序僅部署到域中的用戶,則只需確保所有用戶都有權訪問網絡位置。如果是工作組,或者您不確定,那麼您必須獲取用戶名和密碼作爲參數。在這種情況下,你可以使用這篇文章:http://michiel.vanotegem.nl/2006/07/07/WindowsImpersonationContextMadeEasy.aspx –

+0

現在嘗試process.start shahar。謝謝! – Testifier

相關問題