【问题标题】:Impersonation in ASP.NET web.pageASP.NET web.page 中的模拟
【发布时间】:2021-05-28 18:28:10
【问题描述】:

我在一个巨大的 ASP.NET Web 应用程序中有一个网页,该网页应该通过单击按钮来更新位于本地计算机中的 excel 文件(使用 EPPlus)。

它在本地主机上工作正常,但在服务器上导致此错误。

System.UnauthorizedAccessException:访问路径被拒绝。

目前无法将写入权限授予 IIS 帐户 - NETWORKSERVICE。

除了冒充有没有其他方法来修复这个错误(用户对路径有'写'权限,所以这样做可以解决错误)?

如果模拟是唯一的方法,是否可以仅针对这个特定网页进行? (我不想显着更改 IIS 或 Web 应用程序的设置来解决这个问题)

【问题讨论】:

  • 根据报错信息,请让您的IIS APP pool身份对相关文件夹有完全控制权。我认为授权 IIS 帐户是最好的解决方案。

标签: asp.net asp.net-mvc iis epplus impersonation


【解决方案1】:

有几个问题需要回答:

  • 你是在冒充当前登录用户
  • 无论谁登录,您都想访问文件吗?

第一个

  • 您可以使用以下代码来模拟当前登录 窗口用户

使用 System.Security.Principal; 使用(WindowsIdentity.GetCurrent().Impersonate()) { //你的代码在这里 }

第二个

  • 您可以在具有访问权限的特定用户下运行 IIS 位置。
  • 您可以使用模拟类,其中一些是 可在网上获得,例如 Simple Impersonation Library 可以提供帮助 您可以简化模拟特定用户的过程
  • 有一篇很棒的帖子,可以从https://daoudisamir.com/impersonate-users-in-c/使用C#类
  • 如果您是自托管站点,则可以创建一个有权访问资源的 windows 用户,然后您可以在 using 语句下以该用户身份登录并访问资源

【讨论】:

    猜你喜欢
    • 2019-09-09
    • 2011-02-08
    • 2011-05-11
    • 1970-01-01
    • 2010-09-29
    • 2012-02-19
    • 2012-11-06
    • 2011-02-09
    相关资源
    最近更新 更多