【发布时间】:2014-02-14 17:34:39
【问题描述】:
我有 ASP.Net 和 C# 应用程序。我正在将图像上传到站点并将它们存储在C:\Images 目录中,它工作正常。当我将图像保存到 C:\Images 文件夹并同时复制(或有时移动)到 shared 驱动器时,我使用 shared 驱动器物理地址,它看起来像 @ 987654323@。此驱动器映射到部署服务器。我正在为该站点使用 IIS 托管。
问题在于 共享 驱动器复制。当我从本地计算机(部署站点的位置)使用站点时,将文件复制到 shared 驱动器。但是,当我从另一台机器(部署的服务器除外)使用该站点时,该站点将图像保存在C:\Images,但它不会将文件复制到共享驱动器。
这是我正在使用的代码
**Loggedon 方法调试成功。
public static void CopytoNetwork(String Filename)
{
try
{
string updir = System.Configuration.ConfigurationManager.AppSettings["PhysicalPath"].ToString();
WindowsImpersonationContext impersonationContext = null;
IntPtr userHandle = IntPtr.Zero;
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;
String UserName = System.Configuration.ConfigurationManager.AppSettings["Server_UserName"].ToString();
String Password = System.Configuration.ConfigurationManager.AppSettings["server_Password"].ToString();
String DomainName = System.Configuration.ConfigurationManager.AppSettings["Server_Domain"].ToString();
bool loggedOn = LogonUser(UserName, DomainName, Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref userHandle);
try
{
File.Move(@"C:\Images\" + Filename, updir + "\\" + Filename);
}
catch (Exception)
{
}
finally
{
if (impersonationContext != null)
{
impersonationContext.Undo();
}
if (userHandle != IntPtr.Zero)
{
CloseHandle(userHandle);
}
}
}
catch (Exception)
{
}
}
【问题讨论】:
-
你可能想看看它抛出的异常。
-
确保运行您的应用程序的用户具有写入共享驱动器的适当权限。
-
它没有任何异常。我也测试过。
-
注释掉 catch (Exception) {} - boo btw.;重试并告诉我们它抛出了什么异常。
-
你有两个空的 catch 块。把它们全部扔掉,永远不要再使用它们。