网站发布到IIS以后,我在网站下面建立了一个虚拟目录,指向另外一台服务器的一个文件夹,并且给那个文件夹添加了访问权限。本来是点击WEB上的一个按钮,在文件服务器上的那个文件夹里生成一个文件夹,结果,点击以后,文件夹却在WEB的根目录下创建了,而不是在那个文件服务器上的文件夹里创建,这是为什么呢?
IO类再目录查找时,如果没有指定其他电脑位置,当然是在本机查找目录,创建文件夹。
IIS虚拟目录能使用远程机器那是IIS的功能,你用io类写的代码可没这么智能。
建议在配置文件里配置下实际机器的地址,创建文件时直接操作那台机器。
string strPath = @"" + "Folder/" + path + strPJCode + "";
string tmpRootDir = System.Web.HttpContext.Current.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());
string strPath2 = tmpRootDir + strPath.Replace(@"/", @"\");
Folder是虚拟目录,path是Folder指向的实际目录的路径
Web.config下面已经配置了,
<identity impersonate="true" userName="xxx" password="xxx" />
并且WEB服务器也添加了那个用户,文件夹服务器也添加了那个用户,并为文件夹配置了权限。
using (IdentityScope c = new IdentityScope(webUserName, strURL, webUserPwd))
。
。
。
DirectoryInfo dirinfo = Directory.CreateDirectory(strPath2);
用的是这种方式
@斯玛特·威廉: 查看下strPath2 最终的值是什么。我估计实际还是指向了本机。
应该是:"文件服务器/strPath2"
@arg: IIS里面点击虚拟目录的浏览,能找到文件,文件的链接属性为:
http://192.168.0.160/00-Share/NSI-ProjectControlTool/LS000018/FOLDER_TEST.xlsx
也就是我的虚拟目录设置是正确的,那么,就是strPath2错了strPath2应该找的是本机路径,请问,我的路径应该怎么写?
@arg:是不是我的path,必须加上文件服务器的地址,然后再加上文件服务器上文件夹的路径?
@arg: 比如/00-Share/NSI-ProjectControlTool/是文件服务器上文件夹的地址,然后文件服务器是192.168.233.123,web地址是:192.168.0.160,strPath2该怎么写?
@斯玛特·威廉: 直接 192.168.233.123 \ 然后 + strPath2 ?
@斯玛特·威廉: 对啊,ip地址(或电脑名)+"/"+路径
可以先用控制台程序试试先,成功后再移植到web里
虚拟目录 指的是相对web站点的目录 可以虚拟出一个目录来 指向任意一个实际的目录
指向文件服务器的目录就不是实际目录了?者混分也不能这样啊。