我在这里做错了什么?
我已经检查了变量,它们是应该的,所以没有问题。
我在这里遗漏了什么吗?为什么我会收到“设备未就绪”异常?
代码-
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;
}
}
最佳答案
问题是您正在访问未映射的网络位置。访问网络位置时,您需要对其进行映射(在某些情况下,如果您有权限,它会自动发生。但如果您没有权限,则必须自己完成)。您有几个选择:
- 使用映射的网络驱动器并确保其始终已映射(例如使用组策略或启动脚本)
- 使用 Process.Start 运行“net use”命令(打开 cmd,输入“net use”并查看您需要提供的内容)。例如:
Process.Start("c:\\windows\\system32\\net.exe", "use\\\\servername\\location/user:domain\\用户名密码");
- 在尝试访问网络位置之前,在代码中使用模拟来模拟具有足够权限的用户。
关于c# - 将文件从一台服务器复制到另一台服务器时设备未准备好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12730935/