写入ASP.NET中的网络位置(使用AD)

时间:2009-09-11 14:32:00

标签: asp.net iis active-directory

我遇到了一个(希望)小问题。我有一个用ASP.NET编写的Web应用程序,它将使用IIS 6.0运行在Windows 2003 Server机器上。当我在本地运行它时,它完美无缺。当我从服务器运行它时,该网站工作正常。问题在于写入远程文件夹。我有一个使用应用程序写入的AD权限的网络文件夹。使用我的AD帐户(当我在本地编写时),它可以正确进行身份验证,但在使用IIS帐户时却没有。有人遇到过这个吗?有可用的解决方案吗?

到目前为止,我已经尝试将我的AD帐户用作IIS中的“访客帐户”,该帐户仍在运行,但仍然无效。

非常感谢任何想法,解释或建议!

感谢。

4 个答案:

答案 0 :(得分:3)

默认情况下,ASP.NET在本地用户帐户的上下文中运行,该帐户无法访问您的AD计算机。您可以重新配置连接池以作为域帐户运行,并且可以访问它。您应该为域帐户提供尽可能少的权限,并将其添加到IIS计算机上的IIS_WPG,并将其作为该框的“运行”作为服务权限。

答案 1 :(得分:2)

我通常解决这些问题的方法是做几个步骤。

  • 在AD中为该服务创建一个帐户。
  • 将此帐户添加到您要访问的网络共享中。
  • 然后让您的ASP.Net应用程序使用该服务帐户而不是本地IIS帐户运行。
  • 在您的web.config文件中,您将以下行放在

    <system.web>
    <identity impersonate="true"/>
    </system.web>

答案 2 :(得分:0)

它可能与运行应用程序池的帐户有关吗?

答案 3 :(得分:0)

你也可以考虑按照这个答案中的建议行事:

ASP.NET Windows Authentication Impersonate Problem

将正在写入的代码包装到远程位置,其他所有内容都可以保持不变。这将为您提供Web应用程序的最佳安全性,因为您只使用这些写入来模拟帐户,而不是所有需要的代码。