老革命碰到新问题 ASP.NET程序访问UNC路径

经常会有一些ASP.net程序需要往文件系统里面写入或者读取一些内容。如果程序访问的路径是本机的文件路径(c:\docTemp)这样的话还比较好配置,只要将doctemp的权限设置为允许ASP.net运行帐号(IIS6默认用"Network Service",IIS5的话默认是"ASPNET")可以读写就行。但是如果文件是需要放置在UNC(网络路径,如:“\\10.101.11.111\DocTemp”)路径上的话,就麻烦了。因为Window2003的共享出来的文件.ASP.net运行帐号是无法访问到该网络路径的。因为文件服务器上的Network service和应用服务器的Network service的密码是不一样的(都是动态生成的)。不过还好还是有办法解决的。

如果你的两个服务器都在同一个域里面的话,就建一个域帐号,将这个帐号加入IIS_WPG。同时IIS建一个程序运行池用这个域帐号来运行你的ASP.net程序。文件服务器上的路径也制定这个域帐号能够共享和访问这个共享路径就行了。

但是如果你的两个服务器都不在同一个域的话,就在两个服务器上分别建相同的帐号(密码也必须一样)。将Web服务器的帐号加入IIS_WPG,同时IIS建一个程序运行池用这个域帐号来运行你的ASP.net程序,文件服务器上就指定这个帐号有共享和访问权限就可以了。

但是今天同事告诉我这样配置也没法解决,而且情况很诡异。配置好了,在服务器本机访问站点,附件的上传下载都没问题。但是在其他客户机上面访问的话就报该UNC路径没法访问的错误。

于是远程上服务器看配置,找了半天也没发现问题所在,共享的写入读取权限都配好了,硬盘的NTFS安全权限也配好了。不过服务器好像存在下面几个问题

  1.  
    1. 过在事件查看器里面发现一个来自于rxSMB的系统错误”重定向程序无法确定链接类型“。
    2. 配置的NLB里面心跳线的IP地址和公开地址是同网段,同掩码的

估计是Windows没法知道在访问该UNC路径的时候该走哪个网卡所致。后来让同事把NLB去掉,重新配置其中一台服务器问题解决了。后面估计还要跟踪一下情况重新把NLB配置起来,看看是否还存在同样的问题。

你可能感兴趣的:(asp.net)