【问题标题】:Opening website from IIS in Visual Studio restarts the website在 Visual Studio 中从 IIS 打开网站会重新启动网站
【发布时间】:2021-04-16 15:03:06
【问题描述】:

我在 IIS 中有一个网站,如果我在 Visual Studio(以管理员身份运行)中打开它,应用程序池总是会重新启动——这在我的实时服务器上是个大问题。谁能帮我防止它发生?

我意识到存在预编译的 Web 应用程序,并且 RDPing 到实时服务器并使用 VS 这样并不理想,但我现在无法更改。

我的项目是一个 VB 网站(没有 MVC - 只是 .aspx 页面),我使用 Roslyn 和所有新的语言功能,所以我无法删除 DotNetCompilerPlatform(我认为语言或代码的选择没有任何意义解决问题)。这发生在 Windows 10 和 Server 2016 上。

根据我的调查,我发现了以下内容:

似乎 VS 对 /roslyn 目录中的每个文件都执行了 SetSecurityFile,这会触发 NotifyChangeDirectory 消息。文件的权限保持不变 - VS 会无缘无故地更新它们,这会导致网站重新编译。

我已经清理了 NuGet 包 DotNetCompilerPlatform。我尝试在项目目录上应用宽松的权限(每个人 - 完全控制)。我已经尝试过 VS 2017、2019 和新的 2019 预览版。到目前为止没有任何帮助。我所知道的是,过去不会发生这种情况。

任何想法都将不胜感激。

【问题讨论】:

  • 好吧,如果任何 web.config 上的日期发生变化 - 那么您将重新开始。我没有放弃任何允许使用 VS 打开实时活动站点的做法。不知道你以前是怎么逃脱的——但编辑几乎来自 VS 的任何东西,现在也许只是打开就是“触摸”一些 ISS 检测到的文件——因此重新开始。你真的(不是真的)需要在网站的副本上工作 - 而不是现场制作的,因此正如你刚刚经历的那样 - 你根本无法控制重新开始,这是一种高风险的扑克游戏你实现了这一点,并在过去做到了这一点。

标签: asp.net visual-studio iis roslyn


【解决方案1】:

应用程序池不会自动重启,除非你设置了回收时间或者出现错误,所以请检查你的事件查看器是否有相关错误。并尝试将应用程序池的 startMode 更改为 AlwaysRunning:

  1. 打开 Internet 信息服务 (IIS) 管理器。
  2. 在 Connections 窗格中,选择 Application Pools 节点,在主视图中显示 Application Pools 窗格。
  3. 点击高级设置…
  4. 在 General 组下找到 Start Mode 选项并将其设置为 AlwaysRunning。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2014-01-29
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多