在VirtualBox虚拟机中使用共享文件夹的IIS应用程序

16

我有一个运行Windows Server 2008 R2的VirtualBox虚拟机。该服务器被配置为域控制器。

我在主机机器上有Web应用程序的源代码。我共享了一个包含源代码的文件夹给虚拟机,然后在虚拟机上配置了一个IIS应用程序,并将其指向了共享(\ VBOXSVR \ code)。

当我运行应用程序时,会收到以下消息:

  

模块:IIS Web Core
   通知:开始请求
   处理程序:尚未确定
   错误代码:0x80070001
   配置错误:无法读取配置文件
   配置文件:\? \ UNC \ VBOXSVR \ code \ web.config

我已经验证了应用程序池正在运行的用户帐户可以访问共享。有没有解决这个问题的想法?


嗨,你解决了这个问题吗? - Reynaldi
同样的问题在这里,以前它对我有效,现在不确定发生了什么变化,有解决的好运吗? - peter
3个回答

8

当我为Windows 2012 R2设置vagrant box以进行开发时,遇到了非常相似的问题。据我记得,我能够使用以下方法作为解决方法,但这不是我想在生产环境中实施的东西:

  1. 将C:\ vagrant设置为网络共享,并设置权限以供运行IIS的用户访问 \\ localhost \ vagrant
  2. 将站点的Web根目录设置为网络共享 \\ localhost \ vagrant

理论上,以下内容可能适用于您的情况:

  1. 创建指向网络共享的符号链接,例如: mklink / j“\\ VBOXSVR \ code”C:\ code \
  2. 使IIS可以访问C:\ code的网络共享, \\ localhost \ code
  3. 确保运行IIS的用户将具有对网络共享的权限
  4. 在IIS中将站点的Web根目录设置为网络共享 \\ localhost \ code

(可选)我在主机文件(C:\ Windows \ System32 \ drivers \ etc \ host)中添加了一个localhost条目。这似乎提高了性能,但不应该是必需的。

希望这能指引您朝着正确的方向前进。


太棒了,感谢您提供的解决方法——这解决了一个长期令人沮丧的Vagrant问题。然而,我注意到这种方法的性能非常慢。想知道您是否有任何见解或在使用此方法时发现改进它的变通方法?例如,对静态HTML文件的基本请求需要1-2秒才能加载。甚至还没有尝试过ASP.Net网站。 - Ken Sykora
不幸的是,这只是一个解决方法,因此性能并不是最好的。我记得一开始就遇到了性能问题。如果我没记错的话,我做了以下几点:我增加了虚拟机规格,使其具有3GB内存和4个处理器,调整了应用程序池以在一个小时后进行回收,在主机文件中添加了本地主机条目,并根据此MS文档编辑了注册表,尽管它是针对IIS 6.0的。 - dtripler
这对我有用,但是我必须使用/d开关而不是/j来运行我的mklink命令。 - Jordan

1
似乎Virtualbox在主机和客户机之间共享文件夹的方式存在问题。当我使用Vagrant设置时发现,如果您在主机上手动创建UNC共享,连接到客户机并将IIS指向它,一切都会顺利进行。
请注意,如果您正在使用应用程序池,则应确保分配给池的用户可以访问该共享。
如果您想要查看一些PowerShell脚本来自动化该过程,请查看https://github.com/mefellows/vagrant-smb-plugin中的scripts目录。
或者,您可以使用rsync同步文件夹类型,它具有更好的性能优势。您可以使用Packer(示例模板)创建本地Windows虚拟机。

-2
在解决这个问题上花费了几个小时之后,我终于成功让它工作了。将应用程序池身份配置为 Guest 用户。如果您这样做,一切都将按预期工作。
我有一个设置,其中主机操作系统具有代码和配置了 IIS 的虚拟盒子 vm,从共享文件夹(vbox 共享文件夹)中提供该代码。一切都按预期工作。

这是一个内置的“Guest”账户吗?我的Windows Server 2008 R2安装没有“Guest”账户。所以我想知道如果我创建一个是否会起作用? - Jonathan
@Radu,我目前遇到了和你一样的问题。你能否解释一下,“将应用程序池标识配置为Guest用户”是什么意思?我打开了IIS管理器->我的系统->应用程序池,并在那里找到了我新建的网站。右键单击会显示一个上下文菜单,其中包含一些可能相关的选项:“设置应用程序池默认值...”,“基本设置...”,“高级设置...”。现在如何将应用程序池标识配置为Guest用户?谢谢。 - automatix
@jonathanconway 你解决了吗? - Rob
你能否稍微澄清一下你的回答,因为不太清楚你具体做了什么? - Mladen B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接