在IIS中使用UNC名称时出错



我有一个IIS网站,它使用UNC名称读取文件,有些在同一服务器上,有些在其他服务器上。这已经在我们的一台服务器上运行了多年,运行良好。现在该服务器正在停用,所以我需要将应用程序移动到新服务器,在新服务器上,每当我使用UNC名称时,都会出现"拒绝访问"错误。

但有趣的是:试图在运行应用程序的同一台服务器上读取一个文件,如果我用传统的windows风格命名d:\somedir\somefile,效果很好。但是,如果我使用UNC名称引用完全相同的文件,\myserver\d$\somedir\somefile,它就会失败。所以问题不可能是对文件的权限。由于我不能使用UNC名称读取运行应用程序的同一服务器上的文件,所以问题不可能是服务器之间的访问。

哦,我可以在Windows资源管理器中使用UNC名称访问文件(使用我的个人用户id而不是应用程序池的id登录时)。

同一个应用程序在不同的服务器上运行时可以工作,并且除了它自己之外,它还访问5个不同服务器上的文件。我很确定,当我写这个应用程序时,我没有更改其他服务器上的任何安全设置,尽管我当然可能很幸运,它们被巧合地设置为对我有效的值。

新旧应用程序池都设置为用户ApplicationPoolIdentity。该应用程序没有登录,完全是匿名的。(它运行在公司外部无法访问的内部网络上,它都是只读的,而且不能访问任何信用卡信息或类似的信息,所以安全性不是什么大问题。)

您可以使用Procmon.exe(来自SysinternalsSuite)来检查它无法打开文件的原因(可能是凭据问题)。

好吧,我解决了自己的问题。在它工作的服务器上,我实现了模拟,所以它模拟的是一个与ApplicationPoolIdentity具有不同访问权限的用户。

(很明显,我做了更改,但从未将其提交给SVN。所以,当我在新服务器上签出时,我没有收到它。唉,我只是花了几个小时寻找一个一年前已经解决的问题的解决方案。糟糕到要花几个小时在别人已经解决的一个问题上…)

最新更新