1

发布 ASP.NET 5 Web 应用程序时,我的输出 DLL 在哪里?

运行 MSBuildFileSystemPublish时,发布目录如下所示:

  • approot文件夹:包、运行时和源代码
  • wwwroot文件夹:web.config 和 AspNet.Loader.dll
  • 网络
  • 网络命令

MSBuild.exe "C:/MyApplication/MyProj.xproj" /t:Build,FileSystemPublish /p:PublishConfiguration=Release /p:PublishOutputPathNoTrailingSlash="C:/a/MyApplication"

从日志输出中我可以看到它dnu publish被称为:

dnu publish "C:/MyApplication" --out "C:/a/MyApplication" --configuration Release --runtime dnx-clr-win-x86.1.0.0-beta6 --quiet

如果我往里面web.cmd看,我可以看到 DNX 确实在从源代码运行应用程序:

@"%~dp0approot\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\dnx.exe" --appbase "%~dp0approot\src\MyApplication" Microsoft.Framework.ApplicationHost web %*

我能够成功地将 IIS 指向 wwwroot 目录。

IIS 如何知道调用web.cmd?这是在生产环境中提供 ASP.NET 5 应用程序的正确方法吗?

4

2 回答 2

3
  1. IIS 不调用web.cmd. IIS 知道如何AspNet.Loaderwwwroot文件夹加载。
  2. 在生产环境中,您可能不想从源代码编译,因为启动速度很慢。您应该发布预编译的二进制文件。你可以通过传递--no-sourcednu publish

dnu publish "C:/MyApplication" --out "C:/a/MyApplication" --configuration Release --runtime dnx-clr-win-x86.1.0.0-beta6 --no-source

于 2015-09-17T07:08:10.467 回答
1

问题已过时

根据最新的社区站会(见公告),IIS 和 asp.net 5 之间的 HELIOS 集成已停止。MS 提供的唯一服务器是 kestrel。IIS 本身不会识别 DNX 项目。

您必须通过使用 HttpPlatformHandler (IIS8+) 对其进行反向代理来启动红隼并将其集成到 IIS 中。

于 2015-09-17T16:53:37.030 回答