6

抱歉,如果这是一个愚蠢的问题,但我不明白。因此,我使用 Visual Studio 2015 和 DNX 创建了一个 ASP.NET 5 页面。

开箱即用,我的 project.json 中有这两个依赖项:

"Microsoft.AspNet.Server.IIS": "1.0.0-beta4",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta4"

在 project.json 的“命令”下,我有以下内容:

"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"

在项目属性中,我可以在“IIS Express”和“web”之间更改配置文件作为部署选项。两者都工作正常,当我开始调试时,它会启动 Web 服务器(IIS Express 或 WebListener)并且站点正在运行。如果我停止调试,服务器就会停止。WebListener 在命令提示符中打开一个“dnx.exe”。

这个可插拔的服务器层非常好,我明白了。但是,作为开发人员,我如何设置一个简单的服务器,以便我可以对我的站点进行更改并快速查看更改?我当然可以安装 IIS 并创建一个指向我的 wwwroot 的站点,但这是我在 ASP.NET 世界中的唯一选择吗?我可以让 WebListener “在后台启动”(不向我显示带有 dnx.exe 的命令提示符)吗?我也可以启动一个节点服务器,但又一次 - 我可以这样做很好,但是当我拥有完整的 ASP.NET 工具带时,为什么我必须这样做?

ASP.NET 5 具有动态编译,但我什至不确定如何测试它,因为我的 Web 服务器仅在我处于调试模式时才启动。

我知道这是一个预发布版本,但我们将不胜感激任何帮助。

4

1 回答 1

6

但是,作为开发人员,我如何设置一个简单的服务器,我可以在其中对我的站点进行更改并快速查看更改。

无论使用哪种服务器,您都可以通过在不调试的情况下启动项目 (Shift + F5) 来使用动态编译。

由于体系结构的原因,在 Visual Studio 中以调试 (F5) 开始时,动态编译不起作用。这是因为 Shift + F5 和 F5 之间的区别在于,在后者中,VS 将调试器附加到进程。

将来会支持这一切吗?这还不清楚,但现在因为 VS 不够“智能”来处理从进程中分离,等待 dnx 动态重新编译,然后重新附加到进程。但是直到现在它还没有理由支持这样的场景,所以还不清楚这只是“它还不知道怎么做”还是“不可能做到”。

我当然可以安装 IIS 并创建一个指向我的 wwwroot 的站点,但这是我在 ASP.NET 世界中的唯一选择吗?

不可以。您可以使用任何支持 Microsoft.AspNet.Hosting 的网络服务器。今天,您的选择仅限于 IIS、IIS Express 和您链接到的两个实验性服务器,但目标是通过提供可针对 (Microsoft.AspNet.Hosting) 进行编程的接口,使第三方能够开发替代方案。

ASP.NET 5 具有动态编译,但我什至不确定如何测试它,因为我的 Web 服务器仅在我处于调试模式时才启动。

如果 Web 应用程序正在运行,则启动服务器。没有网络服务器 = 没有 ASP.NET 应用程序。我假设“调试模式”是指“从调试开始(F5)”。如果是这样,那么“开始而不调试(Shift + F5)”来解决您遇到的问题。

这是一个练习:

  1. 关闭 Visual Studio(不是必需的,但有助于显示这些都不是 VS 特定的)。
  2. 启动网络服务器。最简单的方法是 dnx 。从项目根文件夹中的命令行运行 web。但是,您可以启动 IIS Express(应该已经配置),甚至可以配置 IIS 并启动它。
  3. 通过在浏览器中打开 Web 服务器和 Web 应用程序来验证它是否正在运行。
  4. 使用记事本或其他一些文本编辑器,编辑项目中的文件,该文件将有可见的更改,或者只是强制错误“抛出新的 NullReferenceException()”。
  5. 保存文件。
  6. 刷新浏览器。

Web 应用程序将反映更改。如果您快速刷新,您可能会注意到轻微的延迟。那就是发生内存的动态编译。

于 2015-06-16T12:56:08.593 回答