networking共享访问上的IIS 7虚拟目录被拒绝

我有一个负载平衡的Web服务器,我试图在一台服务器(server02)上设置一个虚拟目录到另一台服务器(server01)上的networking共享。 这两个服务器都是Windows 2008R2上的IIS 7。 它们不是域的一部分。

我以server01的pipe理员身份在server02上设置连接到networking共享的虚拟目录(用于testing目的)。

在IIS中,我可以浏览虚拟目录中的文件。 当我在虚拟目录基本设置中单击“testing设置”时,没有错误,虚拟目录可以毫无问题地连接到共享。

但是,当我试图通过虚拟目录请求一个文件( http://server02/media/image.jpg )我得到这个configuration错误“ An error occurred loading a configuration file: Failed to start monitoring changes to '\\server01\media' because access is denied.

我不知道是什么原因造成的,因为根据IIS的连接是好的。

您网站的应用程序池正在运行的用户帐户需要具有该共享的权限。 将其更改为拥有该份额权限的帐户,您应该没事。

另外,如果你打算让server01成为一个单一的故障点,那么你的web服务器的负载平衡点是什么? 您应该复制这些数据,或者使用共享存储对Web服务器进行群集。 你想做什么不是一个好主意。

  1. 在两个系统上添加具有相同密码的本地用户
  2. 授予该用户在共享上的访问权限
  3. 在您的Web服务器上,在该用户名下运行您的应用程序池。

如果你是自动扩展你的服务器比你想在代码中做到这一点,你可以做到以下几点:

 net.exe user MyNewLocalUser Password! /ADD net.exe share MyNewShare=C:\MyPath /Grant:MyNewLocalUser,full 

如果您即时启动Web服务器,则可以使用以下代码创build虚拟目录,并将应用程序池更改为新用户。

  Using mgr As New ServerManager Dim MainApp As Site = mgr.Sites(SiteName) mgr.Sites(SiteName).Applications(0).VirtualDirectories.Add("/MyVirDir", "\\server\share") Dim appPool As String = Nothing For Each app In MainApp.Applications appPool = app.ApplicationPoolName Dim myAppPool As ApplicationPool = mgr.ApplicationPools(appPool) myAppPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser myAppPool.ProcessModel.UserName = "MyNewLocalUser" myAppPool.ProcessModel.Password = "Password!" mgr.CommitChanges() Next End Using