【问题标题】:Opening a folder from web application using C# giving access denied使用 C# 从 Web 应用程序打开文件夹,拒绝访问
【发布时间】:2015-05-05 10:24:58
【问题描述】:

我已使用以下代码通过托管在同一服务器上的 IIS 7.5 上的 ASP.Net MVC 5.0 Web 应用程序在我的屏幕上从服务器打开文件夹,服务器使用的是 Windows 8。

public void OpenFolder()
{
    System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() {
        FileName = "\\SERVERNAME\Public\Lists",
        UseShellExecute = true,
        Verb = "open"
    }); 
}

当我在开发中运行我的应用程序时,这可以很好地打开文件夹,而在生产中时出现 Access denied 错误。

我已将文件夹的所有权限授予 IUSR 和 IIS_IUSRS 以及管理员、用户、网络、网络服务和少数其他用户。但还是没有运气。

如果有人以前遇到过同样的问题或者知道如何解决这个问题,那么请给我一些启发并指导我前进。另外,我不擅长社交。

【问题讨论】:

  • 尝试以管理员身份运行
  • @Dave 我有管理员权限,我应该以管理员身份运行什么,您能详细说明一下吗?
  • 您尝试打开的文件夹与您的应用程序在同一台机器上吗?
  • 还有其他应用程序或进程正在使用该文件夹吗?
  • 是的,两者都在同一台机器上

标签: c# windows-8 asp.net-mvc-5 iis-7.5


【解决方案1】:

在开发中(使用 IIS Express 之类的东西),运行您的代码的进程作为您的登录帐户运行。

但一旦部署,它将作为 IIS 应用程序池配置的任何帐户运行。

另请注意,IUSR 等是 本地 帐户;连接到网络资源(如共享)时,这将被视为访客。为此,您需要将应用程序池作为域帐户(或两台机器上具有匹配用户名和密码的本地帐户)运行。

【讨论】:

  • @Ricard,如果我给客人访问权限呢??
  • @Learner 使用具有明确权限的临时帐户更安全。访客帐户可用于可能不需要这些权限的其他场景
  • @Learner 正如 Oscar 所指出的那样,这将使每个人(访客:无密码)都可以访问。您需要在本地拥有一切并使用应用程序池身份,或者创建必要的用户帐户。
  • @Ricard 谢谢,但即使在授予访客访问权限后,我仍然面临同样的问题
  • @Ricard,现在我在应用程序池中使用了自定义帐户,并使用相同帐户访问了文件夹,这次我得到了服务器执行失败错误
【解决方案2】:

尝试为文件夹授予应用程序池标识(IIS AppPool\DefaultAppPool - 如果不同,则将 DefaultAppPool 替换为您的应用程序池的名称)权限。看到这个链接- http://devonenote.com/2010/09/grant-permission-to-defaultapppool-identity/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多