0

我在网站上有一个按钮,可以创建目录并复制文件。我使用 Visual Studio 2008、ASP.Net 3.5 开发它。我正在运行 Vista 作为我的操作系统。该网站使用身份假冒。

该功能在以下情况下不起作用(“拒绝访问路径 XYZ”):

  • 我通过 IE 访问本地网络服务器运行网站

当 [注意 Visual Studio 以管理员权限运行] 时,该功能可以正常工作:

  • 我在 Visual Studio 中播放
  • 我说在 Visual Studio 的浏览器中查看
  • 我通过 IE 访问本地网络服务器运行网站,但以管理员权限启动 IE
  • 我将网站部署到另一个网络服务器(也是 vista/IIS7)
  • 我修改 FireFox 以接受集成身份验证,然后通过 FireFox 和 localhost 访问

我以前从未见过这种行为,以前 File.Copy 类型的命令只关心被复制到的文件夹的权限是否有效等......(在尝试调试这种情况时,我让每个人都拥有完全控制权)。问题似乎可能在于是否具有管理员权限?或者正在登录到它正在运行的机器?

这里发生了什么?为什么在开发环境下能用,部署到别的机器上,部署在自己的机器上不行?似乎很奇怪,任何帮助将不胜感激。

编辑:我已将“所有人”添加到所有相关目录并赋予该用户完全控制权,所以不应该有任何权限问题吗?

4

4 回答 4

2

IIS 在其下运行模拟线程的用户更有可能无权访问原始文件或目标。您是否尝试过直接以该用户身份进行复制?当您以管理员身份运行 IE 或以管理员身份运行 VS 时,模拟用户拥有管理员的完全权限。

[编辑 - 添加链接]

在类似的线程上有一些信息,使用 SysInternals 的想法很好:

IIS7 的 UnauthorizedAccessException

于 2008-12-16T04:54:44.633 回答
2

您应该尝试通过 asp.net 授予修改权限

你可以通过 google(ing) 找到几篇关于它的文章。

于 2008-12-16T04:59:42.547 回答
2

好的,鉴于这些症状,我已经找到了解决此问题的方法。我不是 100% 确定为什么会这样(特别是因为它在 FireFox 中运行良好,并且如果您不在本地连接,则在 IE 中运行良好),但以下似乎是一种解决方法。

在 IE 中选择工具 -> Internet 选项 -> 安全 -> 受信任的站点 -> 站点,然后将http://localhost添加为受信任的站点。这使您可以在本地使用该网站。为什么在本地连接时需要在 IE 中执行此操作,而不是在连接到另一台计算机时在 FireFox 或 IE 中执行此操作,我不知道。但这似乎是一个可行的解决方法。

于 2008-12-16T07:10:22.627 回答
0

我的猜测是 ASP.Net 运行的身份没有权限(NetworkService)或用于匿名身份验证的用户确实有权限(IUSR)

于 2008-12-16T04:48:02.040 回答