在VirtualBox VM中使用共享文件夹的IIS应用程序

时间:2014-03-25 13:29:59

标签: iis virtualbox iis-express

我有一台运行Windows Server 2008 R2的VirtualBox VM。服务器配置为域控制器。

我在主机上的Web应用程序上获得了源代码。我将一个文件夹共享到包含源代码的来宾VM。我在Guest计算机上配置了一个IIS应用程序,并将其指向共享(\ VBOXSVR \ code)。

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

  

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

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

3 个答案:

答案 0 :(得分:8)

在为带有IIS的Windows 2012 R2设置用于开发目的的流浪盒时,我遇到了类似的问题。根据我的记忆,我能够使用以下作为解决方法,但不是我想在生产环境中实现的东西:

  1. 使C:\ vagrant成为网络共享并将权限设置为 可由运行IIS \\localhost\vagrant
  2. 的用户访问
  3. 将网站的webroot设置为网络共享\\localhost\vagrant
  4. 理论上,以下内容可能适用于您的情况:

    1. 创建网络共享的符号链接,IE:mklink /j "\\VBOXSVR\code" C:\code\
    2. 使C:\代码成为IIS可访问的网络共享\\localhost\code
    3. 确保运行IIS的用户具有网络共享的权限
    4. 将IIS中站点的webroot设置为网络共享\\localhost\code
    5. (可选)我在localhost的主机文件(C:\ Windows \ System32 \ drivers \ etc \ host)中添加了一个条目。这似乎可以提高性能,但它没有必要。

      希望这会指出你正确的方向。

答案 1 :(得分:1)

Virtualbox在Host和Guest之间共享文件夹的方式似乎存在问题。正如我在使用Vagrant设置时所发现的那样,如果您在主机上手动创建UNC共享,请连接到Guest上的该共享并指向IIS上的内容顺利进行。

请注意,如果您使用的是应用程序池,则应确保分配给池的用户可以访问该共享。

如果您想查看几个Powershell脚本的自动化过程,请查看https://github.com/mefellows/vagrant-smb-plugin的脚本目录。

或者,您可以使用rsync synced-folder类型,它具有更好的性能优势。您可以使用Packer(example templates)创建本地Windows VM。

答案 2 :(得分:-2)

在这个问题上花了几个小时后,我终于成功了。将应用程序池标识配置给Guest用户。如果你这样做,一切都会按预期工作。

我有一个设置,其中主机操作系统具有代码,并且配置了IIS的虚拟机vm从共享文件夹(vbox共享文件夹)提供该代码。一切都按预期工作。