有段将MSMQ消息写入磁盘文件代码,如下:
****************************************
byte[] bytRecv = msg[i].Body;
FileInfo fi = new FileInfo(@recvDir + msg[i].Label);
FileStream fs = fi.Create();
fs.Write(bytRecv,0,bytRecv.Length);
fs.Close();
****************************************
当recvDir为"D:\InDir\"时运行正常,其中D盘为本地驱动器。但是如果为"H:\InDir"时出现错误,H盘为网络映射驱动器。执行到fi.Create(); 提示:“未找到路径:"H:\InDir\RecvFile.txt"的一部分”。难道不能直接操作网络驱动器吗?
****************************************
byte[] bytRecv = msg[i].Body;
FileInfo fi = new FileInfo(@recvDir + msg[i].Label);
FileStream fs = fi.Create();
fs.Write(bytRecv,0,bytRecv.Length);
fs.Close();
****************************************
当recvDir为"D:\InDir\"时运行正常,其中D盘为本地驱动器。但是如果为"H:\InDir"时出现错误,H盘为网络映射驱动器。执行到fi.Create(); 提示:“未找到路径:"H:\InDir\RecvFile.txt"的一部分”。难道不能直接操作网络驱动器吗?
FileStream fs = fi.Create();
这样也不行啊。
所以得先连接
可以用cmd命令中的ping 和net use进行连接
然后就像操作本地文件一样或者借助api
WNetCancelConnection2
WNetAddConnection2http://community.csdn.net/Expert/topic/3233/3233637.xml?temp=.5124323
http://community.csdn.net/Expert/topic/4199/4199512.xml?temp=.0139429
同样的代码在控制台程序和windows服务程序的表现不一样。控制台程序运行正常,但是在windows服务程序中执行到FileStream fs2 = fi.Create()就报错。
我想可能是MS的一个BUG!FileStream fs=new FileStream("D:\\Test.txt",FileMode.OpenOrCreate);
byte[] byteArr = new byte[fs.Length];
fs.Read(byteArr,0,Convert.ToInt32(fs.Length));
fs.Close();
FileInfo fi = new FileInfo(@"I:\Test.txt"); // I为映射的网络驱动器
FileStream fs2 = fi.Create();
fs2.Write(byteArr,0,byteArr.Length);
fs2.Close();
net use Z: \\201.101.0.1\D$ password user:administrator
Z: \\201.101.0.1\D$为你影射的路径
password为可以访问改网络路径的用户密码
administrator为可以访问改网络路径的用户
WNetCancelConnection2
WNetAddConnection2
<identity impersonate="true" userName="contoso\Jane" password="pass"/>