【问题标题】:Is it possible to create an OWIN application that can be hosted both as standalone app and inside IIS in the same time?是否可以创建一个可以同时作为独立应用程序和 IIS 内部托管的 OWIN 应用程序?
【发布时间】:2014-10-12 11:02:19
【问题描述】:

我想创建一个具有两种不同部署可能性的 OWIN/WebAPI 应用程序:

  1. 作为一个独立的应用程序(OWIN 自托管),因为它可能是工具包的一部分。
  2. 作为托管在 IIS 服务器内的 Web 应用程序。

打个比方 - 想想 Jenkins,它既可以在 Tomcat 内部运行,也可以独立运行。

我对此有一些疑问:

  1. 我需要两个不同的启动类吗?
  2. 如何构建项目以生成两个不同的程序集(一个 EXE 和一个 DLL)
  3. 如何通知 IIS 应用程序代码在 EXE 中

我来自 Java 背景,所有这些都可以通过适度的麻烦实现,而且我在使用 Microsoft 技术方面非常熟悉,所以任何关于如何实现这一点的指针都会是有益的。

【问题讨论】:

    标签: c# asp.net iis owin


    【解决方案1】:

    创建一个 .NET 程序集项目并将所有需要的 NuGet 引用添加到该项目,例如 ASP.NET Web API 核心 (Microsoft.AspNet.WebApi.Core) 等。这里你将拥有你的 ApiControllers 等。当然,根据您的设计,您可能会在自己的项目中拥有域(业务规则等)和数据访问权限。到目前为止,您拥有的项目不会有任何托管问题。

    然后,您创建一个空的 ASP.NET 项目并引用早期的 Web API 项目。这样您就可以在 IIS (ASP.NET) 中托管您的 Web API。您还可以创建控制台应用程序并添加 OWIN 托管所需的 NuGet 包,当然还有早期的 Web API 项目。这是使用 Katana 托管 API 进行自托管。

    顺便说一句,在这种安排下,不要使用任何托管特定代码,例如HttpContext.Current。始终使用框架功能。

    PS。如果您在使用 Web API 定位控制器时遇到任何问题,请在网络上搜索在外部程序集中定位控制器。

    https://www.google.com/search?q=+asp.net+web+api+locating+controllers+in+external+assemblies&oq=+asp.net+web+api+locating+controllers+in+external+assemblies

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      相关资源
      最近更新 更多