最近工作中要解决一个问题, 就是让ASP.NET访问网络盘, 读取里面的PDF文件并在浏览器中将其打开.
刚刚开始以为很简单, 也就是直接映射网络硬盘, 然后直接调用Directory.GetFiles函数了事, 结果, 这个事情就搞了几天, 原因是函数GetFiles一直返回不了值, 因为ASP.NET不够权限访问网络盘. 这样就只能用impersonate了, 但impersonate再怎么用, 也是一直报错, 无法得到想要的结果
一直baidu, google, 不果, 终于, 集合各家所长, 问题解决了
先假设网页所在的服务器为websvr, 网络盘所在的服务器为filesvr
1. 在filesvr上创建一个可以访问该网络盘的新用户, 假设为test, 密码为1234
2. 同样, 要在websvr上面创建一个相同的用户test, 密码也要一模一样, 为1234 (注: 如果带字母, 很明显, 大小写也要一样啦)
3. 剩下事情就很简单了, 直接用ASP.NET的impersonate, 在web.config里面加入<identity impersonate="true" username="test" password="1234"/>
唯一不妥的地方就是把username & password明文暴露在外了, 当然, 由于这个user/pwd也不是什么重要的系统管理员身份, 结果还是可以接受的
不过, 测试的结果只通过了UNC格式的网络文件路径, 对于映射网络硬盘, 还是不行, 但目前也只能先接受这个结果了