问题描述
- 这个问题有点难,哪位大牛给看看!!
-
这个问题有点难,哪位大牛给看看!!
应用服务器A,B:win 2008 server IIS 7
文件服务器W:win 2008 server需求:A,B服务器 搭建网站,需要把文件上传共享到W服务器共享目录,处理并实时反馈处理进度。
问题:A,B服务器 网站在开启线程,异步读取W服务器的时候,报拒绝访问异常。在同一台机器上处理没有问题。应用场景描述:
通过访问A服务网站,上传一个EXCEL文件到W服务器共享目录下,在A服务器同时读取W服务器上传的文件进行处理(包括:校验数据,提取数据,转换数据等,反正过程比较麻烦,处理时间比较长),这时,我会在A服务器后台开启一个线程,代理方式
去处理这一个过程,并把处理的过程写到W服务器共享目录的Log文件中。主线程直接返回,前台提示用户:
并在用户前台浏览器用Ajax,每隔5秒访问一次A服务,查询处理状态(A服务器读取W服务共享目录的Log文件),把状态返回的文字更新回文本框内。
配置实现过程详细说明:
1. 先拿一台A应用服务器的实现过程描述,发布网站到A,网站的应用池 Net4.0, 模式是“集成”。
2. 在网站里建立共享虚拟目录,
路径指向W服务器的共享目录,A、W服务器都增加了相同的用户user,
并把此用户指定为两边(A,W)访问的特定用户,也把user用户分别添加到W服器的共享目录和A服务器虚拟目录,并给完全控制的权限。
3. A服务器的
此目录也给user用户分配了完全控制权限。
4. A网站的web.config也添加了indentity impersonate属性:
5. IIS7中,ASP.NET 模拟 也启用了:
问题总结:
现在从A上传Excel到W是没有问题的~不用线程方式来处理的话(前台会卡死一直loading等待处理完成),也是可以成功的,说明配置IIS7的共享目录和权限设置都没有问题,现在只是,用线程方式去访问W的共享目录时,才会出问题。
我个人觉得是 开启的线程没有那么大的权限去通过模拟访问W的共享目录,也就是没有用user这个用户去访问,所以被拒绝。以前在IIS6,这么配置是没有问题的,IIS6下,有一个设置FULLTRUST的方法,网上有相关文章(感谢一下)http://www.cnblogs.com/fengtangquan/archive/2010/11/12/1876145.html,但在IIS7这里就没配置方法了,也不知道是不是这个原因,现在在这里求教哪位大牛给小弟出出主意,先感谢啦~~
解决方案
沙发,坐等,仰视同问,坐等高手出现对招
解决方案二:
IIS身份驗證集成就是一大個坑
解决方案三:
可以看一下cas单点登录
解决方案四:
没人给解答一下么,哪们高手快快显身啊?