asp.net网站访问映射网络驱动器的问题! 楼主你在B机器上做个WebService,A上面得程序访问B上的WebService,然后客户端就可以通过这个服务把本地的文件上传至B上,那A的网络映射驱动器就可以跟B上的文件夹同步了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是IIS6中asp.net工作者进程是W3WP,若未启用模拟impersnation,执行代码线程的帐号默认是Network service,因此你需要将共享文件夹授予此帐号访问权限 我模拟了administrator账户,并且把实验把两边的机器都设置为同样的密码,也不行 B机器共享目录设置everyone写权限,然后需要用程序来模拟登陆B机器并创建映射:#region 创建映射盘 /// <summary> /// 需要映射的磁盘分区名称 /// </summary> /// <param name="host">映射服务器的IP地址</param> public static void CreateSharePartition(string host) { foreach (DriveInfo a in System.IO.DriveInfo.GetDrives()) { if (a.Name.ToUpper() == "Z:\\") { return; } } WNetConnectionHelper.WNetAddConnection(host + "\\" + ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["Password"], ConfigurationManager.AppSettings["ShareFolder"], "Z:"); } #endregionWNetConnectionHelper代码如下:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Runtime.InteropServices;namespace UserManage{ public static class WNetConnectionHelper { [DllImport("mpr.dll", EntryPoint = "WNetAddConnection2")] private static extern uint WNetAddConnection2(NetResource lpNetResource, string lpPassword, string lpUsername, uint dwFlags); [DllImport("Mpr.dll", EntryPoint = "WNetCancelConnection2")] private static extern uint WNetCancelConnection2(string lpName, uint dwFlags, bool fForce); [StructLayout(LayoutKind.Sequential)] public class NetResource { public int dwScope; public int dwType; public int dwDisplayType; public int dwUsage; public string lpLocalName; public string lpRemoteName; public string lpComment; public string lpProvider; } public static uint WNetAddConnection(NetResource netResource, string username, string password) { uint result = WNetAddConnection2(netResource, password, username, 0); return result; } public static uint WNetAddConnection(string username, string password, string remoteName, string localName) { NetResource netResource = new NetResource(); netResource.dwScope = 2; //RESOURCE_GLOBALNET netResource.dwType = 1; //RESOURCETYPE_ANY netResource.dwDisplayType = 3; //RESOURCEDISPLAYTYPE_GENERIC netResource.dwUsage = 1; //RESOURCEUSAGE_CONNECTABLE netResource.lpLocalName = localName; netResource.lpRemoteName = remoteName.TrimEnd('\\'); //netResource.lpRemoteName = lpComment; //netResource.lpProvider = null; uint result = WNetAddConnection2(netResource, password, username, 0); return result; } public static uint WNetCancelConnection(string name, uint flags, bool force) { uint nret = WNetCancelConnection2(name, flags, force); return nret; } }}最后的结果就和操作本机硬盘一样了。分享是快乐的,祝调试成功。 文件夹右键,点击共享,然后点击权限,把你A机器上的NETWORK SERVICE帐号添加上来。 楼上的莫激动,他遇到的是权限问题,你的回答里面加入了everyone,其实就根本没有控制这个权限了 谢谢你热情的给我回答,但真的不是我想要的答案,现在客户那边的需求不是让我去连接远程共享文件,而是已经建立好了映射让我去用web程序访问映射驱动器 没看上面的回复,不过我正好做过和你的要求一致的东西:web页面上,用户点击了某个文件,这个文件可能分布在局域网内不知道哪台服务器上,然后用户点击下载把这些文件下载到前端。问题的关键是网络的访问问题,首先你需要知道相应的用户名和密码,然后使用的是net use命令使用网络(你在cmd中运行试试),然后用相应的File函数取得文件,用完之后net use/delete>NUL停止访问就这样。 1.Web.Config中设置asp.net运行的帐号<identity impersonate="true" userName="filestorage" password="123456"/>2.在 asp.net运行的系统和文件存储服务器的系统中新建以 filestorage 为用户名, 123456为密码的帐号,并赋予相应的权限。3.文件存储服务器上设置好了帐号之后,在新建一个share并赋予filestorage帐号的权限4.Web server的asp.net程序上就可以通过\\serverName(IP)\shareName\.. 来访问共享出来的文件夹了。http://topic.csdn.net/u/20090429/18/903e8096-0566-4910-9b91-6e2f63ca6b04.html 你好,谢谢你的回答,但可能你没有理解我的意思,我是想说我用网络映射驱动器访问共享,现在我直接用\\serverName(IP)\shareName\.. 可以访问,但客户要求用映射网络驱动器,可能是那边有什么权限问题,请问你知道是什么吗? 我还是不清楚你到底遇到了什么问题。1. 你的网络驱动器可以建立起来吗?2. 你在windows里面可以访问这个网络驱动器吗? asp.net MSCHART的余白设置 ASP太老土了我们就不可以跳过HTML编写网页? 关于datagrid的问题 求:javaScript可以入门开始学的好书! 有用 Visual Web Developer 2005 Express Edition 做开发的吗? 如何隐藏 网页中播放文件的地址阿??? emgu cv图片识别问题 哪里可以查到 ASP.NET MVC 的 类 和 API asp.net 用网上找到的侧边导航栏多点几下导航的标题后面会卡死 程序做完后,如何编译 关于ajax tab控件和gridview问题 提示我PATH未定义
#region 创建映射盘
/// <summary>
/// 需要映射的磁盘分区名称
/// </summary>
/// <param name="host">映射服务器的IP地址</param>
public static void CreateSharePartition(string host)
{
foreach (DriveInfo a in System.IO.DriveInfo.GetDrives())
{
if (a.Name.ToUpper() == "Z:\\")
{
return;
}
} WNetConnectionHelper.WNetAddConnection(host + "\\" + ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["Password"], ConfigurationManager.AppSettings["ShareFolder"], "Z:"); }
#endregionWNetConnectionHelper代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;namespace UserManage
{
public static class WNetConnectionHelper
{
[DllImport("mpr.dll", EntryPoint = "WNetAddConnection2")] private static extern uint WNetAddConnection2(NetResource lpNetResource, string lpPassword, string lpUsername, uint dwFlags); [DllImport("Mpr.dll", EntryPoint = "WNetCancelConnection2")] private static extern uint WNetCancelConnection2(string lpName, uint dwFlags, bool fForce); [StructLayout(LayoutKind.Sequential)] public class NetResource
{ public int dwScope; public int dwType; public int dwDisplayType; public int dwUsage; public string lpLocalName; public string lpRemoteName; public string lpComment; public string lpProvider; } public static uint WNetAddConnection(NetResource netResource, string username, string password)
{ uint result = WNetAddConnection2(netResource, password, username, 0); return result; } public static uint WNetAddConnection(string username, string password, string remoteName, string localName)
{ NetResource netResource = new NetResource(); netResource.dwScope = 2; //RESOURCE_GLOBALNET netResource.dwType = 1; //RESOURCETYPE_ANY netResource.dwDisplayType = 3; //RESOURCEDISPLAYTYPE_GENERIC netResource.dwUsage = 1; //RESOURCEUSAGE_CONNECTABLE netResource.lpLocalName = localName; netResource.lpRemoteName = remoteName.TrimEnd('\\'); //netResource.lpRemoteName = lpComment; //netResource.lpProvider = null; uint result = WNetAddConnection2(netResource, password, username, 0); return result; } public static uint WNetCancelConnection(string name, uint flags, bool force)
{ uint nret = WNetCancelConnection2(name, flags, force); return nret; } }}
最后的结果就和操作本机硬盘一样了。分享是快乐的,祝调试成功。
Web.Config中设置asp.net运行的帐号
<identity impersonate="true" userName="filestorage" password="123456"/>2.
在 asp.net运行的系统和文件存储服务器的系统中新建以 filestorage 为用户名, 123456为密码的帐号,并赋予相应的权限。3.
文件存储服务器上设置好了帐号之后,在新建一个share并赋予filestorage帐号的权限4.
Web server的asp.net程序上就可以通过\\serverName(IP)\shareName\.. 来访问共享出来的文件夹了。http://topic.csdn.net/u/20090429/18/903e8096-0566-4910-9b91-6e2f63ca6b04.html
你好,谢谢你的回答,但可能你没有理解我的意思,我是想说我用网络映射驱动器访问共享,现在我直接用\\serverName(IP)\shareName\.. 可以访问,但客户要求用映射网络驱动器,可能是那边有什么权限问题,请问你知道是什么吗?
2. 你在windows里面可以访问这个网络驱动器吗?