将文件从一台服务器复制到另一台服务器时,设备尚未就绪

RJ.*_*RJ. 2 c# asp.net device

我在这做错了什么?

我检查了变量,它们应该是什么,所以没有问题.

我在这里错过了什么吗?为什么我得到"设备未准备好"的例外?

代码 -

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;
       }
   }
Run Code Online (Sandbox Code Playgroud)

Sha*_*rtz 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. 在尝试访问网络位置之前,请在代码中使用模拟来模拟具有足够权限的用户.