2

我在这里做错了什么?

我已经检查了变量,它们是它们应该是的,所以那里没有问题。

我在这里错过了什么吗?为什么我会收到“设备未准备好”异常?

代码 -

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;
       }
   }
4

1 回答 1

5

问题是您正在访问未映射的网络位置。访问网络位置时,您需要映射它(在某些情况下,如果您有权限,它会自动发生。但如果您没有权限,您必须自己做)。你有几个选择:

  1. 使用映射的网络驱动器并确保它始终被映射(例如使用组策略或启动脚本)
  2. 使用 Process.Start 运行“net use”命令(打开 cmd,输入“net use”并查看需要提供的内容)。例如:Process.Start("c:\\windows\\system32\\net.exe", "use \\\\servername\\location /user:domain\\username password");
  3. 在尝试访问网络位置之前,在您的代码中使用模拟来模拟具有足够权限的用户。
于 2012-10-04T15:49:52.227 回答