2010-12-22 88 views
6

不幸的是,我没有很多关于此的信息。 我有一位客户将他们的网站从古老的系统移至Windows 2008 Server上的IIS7。有关该错误信息是如下:IIS7权限被拒绝 - ASP文件写入

错误: E:\ wwwroot的\ SP \ XXX \ online_data.xls Microsoft VBScript运行时错误 '800A0046'

权限被拒绝

/XXX /燕麦/ exceldata的.asp,行52

代码:

49 response.write(server.mappath("online_data.xls")) 
50 
51 set fso = createobject("scripting.filesystemobject") 
52 Set act = fso.CreateTextFile(server.mappath("online_data.xls"), true) 

唯一的建议到目前为止是:

grant the application pool (DefaultAppPool/Classic AppPool)’s impersonated identity read and write permission to the physical folder which the asp page reside

当我获得访问权限时会查看此内容,但其他建议将不胜感激。

+1

我认为这个建议可行,另一个选择是检查默认的应用程序池是否作为网络服务运行,并给网络服务访问权限写入该文件夹 – kd7 2010-12-22 02:19:24

回答

3

建议是正确的。如果由于任何配置原因,解决方案的路径不是立即显而易见的,请尝试运行procmon(在“online_data.xls”上过滤)并查看谁失败,原因以及他们运行的用户帐户。然后检查ACL。

12

提供的答案是正确的,但我需要一些关于如何完成它的更多细节。要使它变得非常简单,请按照以下步骤操作。我在内联网的沙箱系统上设置了一个asp页面计数器。

  1. 打开计算机管理。在默认应用
  2. 向下钻取到IIS服务器 管理
  3. 在连接窗格中,单击 应用程序池
  4. 在应用程序池窗格中, 右键单击并选择 高级设置。查看 过程模型部分。
  5. 默认情况下,标识属性为 设置为ApplicationPoolIdentity。 这是一个内置帐户。
  6. 如果它被设置为默认值,那么您的 可以使用内置用户 machinename \ IUSR为您的 权限设置。我不得不 指定机器名称,因为 这是一个虚拟化服务器,YMMV。
  7. 如果它未设置为默认值,请使用 该用户名作为您的权限 设置。
  8. 取消该对话框并将 返回到Windows资源管理器,然后返回到需要添加权限的文件夹 。
  9. 右键点击即可获得权限 设置。
  10. 设置机器名\ IUSR或 非默认用户名,您在上述步骤6/7中确定了 。根据需要授予 权限。

这帮助: http://learn.iis.net/page.aspx/140/understanding-built-in-user-and-group-accounts-in-iis-7/

2

我在Windows 7中也有类似的问题,我的解决办法是改变身份验证。从IIS中选择该站点,转到身份验证,禁用匿名身份验证并启用Windows身份验证。

0

用一些类似的东西花了一点时间。即使使用正确的设置,它也无法正常工作。

然后我试着先在服务器上创建实际的文件。原来是有效的技巧。现在我的ASP页面写入现有的文件没有问题。

必须是从头开始创建一个新的文档,这是另一个问题。