【问题标题】:IIS Application Using Shared Folder in VirtualBox VMIIS 应用程序在 VirtualBox VM 中使用共享文件夹
【发布时间】:2014-03-25 13:29:58
【问题描述】:

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

我在主机上的 Web 应用程序中有源代码。我与包含源代码的来宾 VM 共享了一个文件夹。我在来宾机器上配置了一个 IIS 应用程序并将其指向共享 (\VBOXSVR\code)。

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

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

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

【问题讨论】:

  • 嗨,这个问题你解决了吗?
  • 同样的问题,它曾经对我有用,不知道现在发生了什么变化,有没有运气解决它?

标签: iis virtualbox iis-express


【解决方案1】:

在使用 IIS 为 Windows 2012 R2 设置 vagrant box 以用于开发目的时,我遇到了一个非常相似的问题。据我记得,我可以使用以下方法作为解决方法,但我不想在生产环境中实施:

  1. 使 C:\vagrant 成为网络共享并将权限设置为 运行 IIS 的用户可以访问 \\localhost\vagrant
  2. 将站点的webroot设置为网络共享\\localhost\vagrant

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

  1. 创建指向网络共享的符号链接,即:mklink /j "\\VBOXSVR\code" C:\code\
  2. 使 C:\code 成为 IIS 可访问的网络共享,\\localhost\code
  3. 确保运行 IIS 的用户有权访问网络共享
  4. 在 IIS 中将站点的 webroot 设置为网络共享,\\localhost\code

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

希望这将为您指明正确的方向。

【讨论】:

  • 太棒了,谢谢你——这解决了一个长期令人沮丧的流浪者问题。但是,我注意到这种方法的性能真的很慢。想知道您是否有任何见解或在使用此方法时是否找到了改进方法?例如,对静态 HTML 文件的基本请求需要 1-2 秒才能加载。还没有尝试过 ASP.Net 网站。
  • 遗憾的是,这是一种解决方法,因此它没有最佳性能。我确实记得一开始有性能问题。如果我没记错的话,我做了以下事情:我增加了 vm 规格以拥有 3GB 内存和 4 个处理器,调整应用程序池以在一小时后回收,在主机文件中添加 localhost 条目,并根据this MS doc 编辑注册表尽管它适用于 IIS 6.0
  • 这对我有用,但我必须使用 /d 开关而不是 /j 运行我的 mklink 命令。
【解决方案2】:

Virtualbox 在主机和来宾之间共享文件夹的方式似乎存在问题。正如我在使用 Vagrant 设置执行此操作时发现的那样,如果您在主机上手动创建一个 UNC 共享,请连接到来宾上的该共享并将 IIS 指向它,一切都会顺利进行。

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

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

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

【讨论】:

    【解决方案3】:

    在这个问题上花了几个小时后,我终于设法让它工作了。将您的应用程序池身份配置为来宾用户。如果您这样做,一切都会按预期进行。

    我有一个设置,其中主机操作系统具有代码,并且配置了 IIS 的 virtualbox vm 从共享文件夹(vbox 共享文件夹)提供该代码。一切正常。

    【讨论】:

    • 这是一个内置的“访客”帐户吗?我安装的 Windows Server 2008 R2 没有“来宾”帐户。所以我想知道如果我创建一个它是否会起作用?
    • @Radu 目前有同样的问题,你有什么。您能否解释一下,“将您的应用程序池身份配置为来宾用户”是什么?我opened the IIS Manager -> my System -> Application Pools 在那里找到了我新设置的网站。鼠标右键单击会显示一个上下文菜单,其中包含一些可能相关的点:Set Application Pool Defaults...Basic Settings...Advanced Settings... 现在如何为来宾用户配置应用程序池身份?谢谢。
    • @jonathanconway 你明白了吗?
    • 你能否澄清一下你的答案,因为真的不清楚你到底做了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2014-05-13
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    相关资源
    最近更新 更多