【发布时间】:2014-03-28 05:28:28
【问题描述】:
我可以在普通控制台、UI 或 Windows 服务应用程序中托管一个 ASP.NET(如果重要的话是 MVC5)Web 应用程序吗?没有 web.config 从哪里开始?
背景是我需要一个提供 WCF 服务和其他管理的主服务,同时我想展示一个带有 ASP.NET MVC 的 UI。
将 ASP.NET Web 应用程序放在单独的程序集中,宿主 由 主程序集 启动是可以接受的。
由于我想添加许多 cmets:
系统已经自托管了一些 WCF 服务。这些也可以为 HTML 提供服务,但这就像重新发明轮子一样。我不喜欢将 IIS 作为依赖项,应用程序应该自己提供一切。由于 WCF 服务使用一些端点定义和ServiceHost,因此添加所需的 HTML-UI 似乎很诱人,就像其他服务一样。
但我也愿意研究其他方法。但这意味着有两个听众,这似乎 - 不太好。
【问题讨论】:
-
在 IIS 中托管 MVC 应用程序有什么问题?
-
@xxbbcc 这样可能没有什么“错误”,但社区有兴趣在 IIS 之外托管 Web 应用程序(例如在 Windows 服务中)。但在这种特殊情况下,MVC 不能在 IIS 之外托管,因为它对 System.Web 有很强的依赖性。
-
@SimonBelanger 我并不是要暗示这样做是“错误的” - 但是在控制台中托管 Web 应用程序似乎没有多大意义,所以我很好奇。
-
@ZoolWay 是的。但就托管而言,System.Web 将自身注册为 IIS 的 HttpModule。 MVC 依赖 System.Web 来响应 HttpRequest 意味着它需要在 IIS 上注册一个模块。当然,您可以拉 System.Web 并使用帮助程序,什么都没有问题。但是运行 MVC 应用程序将取决于 System.Web IHttpModule 在 IIS 中的注册,如果你想要任何东西进来。你不能使用简单的 TcpListener 或任何其他替代品作为通信通道。
-
@ZoolWay 最近与 Scott Hanselman 和 Louis DeJardin 进行的一次谈话可能对 System.Web 和 IIS 之间的关系和联系感兴趣。演讲是关于 Helios 项目的,但介绍对这个话题很感兴趣。 Building Modern Web Apps: (07) ASP.NET "Project Helios"
标签: .net asp.net-mvc