【问题标题】:In Asp.Net 5 where does %DNX_PATH% in the wwwroot/web.config come from?在 Asp.Net 5 中,wwwroot/web.config 中的 %DNX_PATH% 来自哪里?
【发布时间】:2015-12-18 15:19:52
【问题描述】:

我正在尝试了解在 IIS 或 IIS Express 上运行的 Asp.net 5 应用程序的启动过程。到目前为止我的理解是,当请求进入 IIS 时,由于 wwwroot/web.config 文件中指定了以下代码,它会运行 httpPlatform 处理程序:

<configuration>
  <system.webServer>
     <handlers>
         <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
     </handlers>
     <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
  </system.webServer>
</configuration>

所以当 IIS 运行 httpPlatformHandler 时,我相信它会从上面的 httpPlatform 标记中获取它的配置信息。这是正确的吧? “%DNX_PATH%”从哪里来?“%DNX_ARGS%”从哪里来?这些占位符是怎么得到它们的值的?

如果我能理解这一点,那么我可能会更好地了解流程的下一步是什么。谢谢!

【问题讨论】:

  • 你听说过环境变量吗? :) 他们seem to be setweb.cmd
  • @CodeCaster 谢谢,乍一看似乎是这样,但请看下面我对 Maxime 的回复。在这种情况下,我认为 web.cmd 中的变量恰好命名相同,但这不是为 web.config 中使用的内容设置的地方。至少我不明白它是怎么回事,因为 web.config 是导致 web.cmd 运行的原因,它必须在 web.cmd 运行之前有一个值。

标签: c# iis asp.net-core


【解决方案1】:

%DNX_PATH% 在安装 ASP.NET 5 时设置。

当您从http://get.asp.net 下载安装程序时,它会自动下载第一块拼图,即dnvm

dnvm 将允许您获取最新(和以前)的 .NET 运行时。

此运行时将在 web.cmd 中用于创建变量 %DNX_PATH%,然后将其插入该配置文件中。

重要的是要知道您确实需要在这台机器上安装dnx 才能运行它。

【讨论】:

  • Maxime,确实在 web.cmd 文件中设置了 %DNX_PATH% 变量,但是 web.config 中的“%DNX_PATH% 最终在 RC1 Update 1 中设置为”..\approot \web.cmd”,所以实际上 web.config 中的这一行是导致 httpPlatformHandler 运行 web.cmd 的原因。因此它不能是 web.cmd 代码设置 web 中的 %DNX_PATH% .config. 这有意义吗?
  • 是的,同意。删除答案,因为它没有意义。我猜咖啡不够。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多