ASP.NET授予对本地资源的访问权限

时间:2010-04-13 14:02:18

标签: asp.net

我有一个在Windows Server 2003服务器上运行的ASP.NET Web应用程序。

有一个表单可以读取和写入应用程序目录中的xml文件。

我总是授予 NETWORK SERVICE 用户对我的应用程序文件夹的完全控制权,以便它可以读取和写入xml文件。

我将应用程序放在另一台Windows Server 2003服务器上并执行了相同的步骤,但我在读取和写入xml的表单上获得了Access denied异常。

我做了一些搜索,发现如果你授予用户 ASPNET 完全控制它可以工作的目录,我就这样做了,它运行正常。

我的问题是:向 NETWORK SERVICE ASPNET 用户授予完全控制权限有什么区别?

导致此问题的两台服务器有什么区别?

感谢

2 个答案:

答案 0 :(得分:1)

在所有情况下,您都需要为应用程序池的用户帐户授予适当的访问权限。 IIS6引入了应用程序池。在IIS6之前,.NET应用程序在machine.config文件中配置的用户帐户下运行,因此您可以在那里查看以确定需要访问的用户。

默认情况下,网络服务已分配给应用程序池。听起来有人在其中一台服务器上设置不同。

答案 1 :(得分:1)

理想情况下,您不应该使用任何一个帐户。

您应创建一个低权限帐户,该帐户只能访问您拥有的每个Web应用程序所需的资源。将新帐户添加到IIS_WPG用户组。然后为每个应用程序创建一个应用程序池,并将其设置为专门为其创建的用户。

有关更改应用程序池标识的说明,请参阅this article(TechNet)。

我所描述的配置现在是Server 2008 R2 / Win 7(source)中的默认配置。

不幸的是,由于有人更改了第二台服务器上的默认配置,因此我们无法告诉您这两个帐户之间的差异。

您需要做的(或让您的IT部门做)需要比较每个帐户在本地计算机上拥有的权限。这将是乏味的。但是,如果您可以运行powershell,则可以使用this article编写脚本以列出每个帐户的权限并进行比较。

祝你好运找到差异。