托管真正的 WEB API 项目而不是简单的 class
Hosting a real WEB API project instead of a simple class
我已经阅读了几篇关于 TopShelf 如何工作的文章 articles。他们都在说:
创建控制台应用程序
添加 Topshelf NuGet 包
创建一个简单的 testController : ApiController
来表示服务逻辑(我想托管现有的 WEB API 项目而不是这个 testController)
...
但现在我想托管现有的 WEB API 项目,而不是这个 testController
。我应该如何在这个 TopShelf 控制台应用程序中用这个 testController
替换我的项目?
显然我无法使用 TopShelf 配置我的 WEB API 项目本身,而不是使用控制台应用程序,因为 WEB API 没有像控制台应用程序这样的 exe 文件。
我只想知道我应该如何用我的真实 API 项目替换控制台应用程序中的这个测试控制器?
将新的控制台应用程序添加到您的解决方案
将 NuGet 包 Microsoft.Owin.SelfHost
、Microsoft.AspNet.WebApi.OwinSelfHost
和 Topshelf
安装到您的新项目
添加一个Startup.cs
(see here)
添加TopshelfService.cs
public class TopshelfService
{
private IDisposable moDisposable = null;
public void Start()
{
this.moDisposable = WebApp.Start<Startup>("http://localhost:9989");
}
public void Stop()
{
this.moDisposable?.Dispose();
}
}
将 Topshelf Section 中的代码添加到您的 Main 方法
添加对现有 WebApi 项目的引用
在您的 Startup
class 中从您的控制器创建一个虚拟实例。 (这是在启动 Owin 之前加载 WebApi 项目所必需的)
public void Configuration(IAppBuilder app)
{
DemoController dummy = new DemoController();
// Configure Web API for self-host.
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(config);
}
编译并运行
使用 "Project.exe" 安装服务
现在你有一个 windows 服务“Self Host Web API Demo'
我已经阅读了几篇关于 TopShelf 如何工作的文章 articles。他们都在说:
创建控制台应用程序
添加 Topshelf NuGet 包
创建一个简单的
testController : ApiController
来表示服务逻辑(我想托管现有的 WEB API 项目而不是这个 testController)...
但现在我想托管现有的 WEB API 项目,而不是这个 testController
。我应该如何在这个 TopShelf 控制台应用程序中用这个 testController
替换我的项目?
显然我无法使用 TopShelf 配置我的 WEB API 项目本身,而不是使用控制台应用程序,因为 WEB API 没有像控制台应用程序这样的 exe 文件。
我只想知道我应该如何用我的真实 API 项目替换控制台应用程序中的这个测试控制器?
将新的控制台应用程序添加到您的解决方案
将 NuGet 包
Microsoft.Owin.SelfHost
、Microsoft.AspNet.WebApi.OwinSelfHost
和Topshelf
安装到您的新项目添加一个
Startup.cs
(see here)添加
TopshelfService.cs
public class TopshelfService { private IDisposable moDisposable = null; public void Start() { this.moDisposable = WebApp.Start<Startup>("http://localhost:9989"); } public void Stop() { this.moDisposable?.Dispose(); } }
将 Topshelf Section 中的代码添加到您的 Main 方法
添加对现有 WebApi 项目的引用
在您的
Startup
class 中从您的控制器创建一个虚拟实例。 (这是在启动 Owin 之前加载 WebApi 项目所必需的)public void Configuration(IAppBuilder app) { DemoController dummy = new DemoController(); // Configure Web API for self-host. var config = new HttpConfiguration(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); app.UseWebApi(config); }
编译并运行
使用 "Project.exe" 安装服务
现在你有一个 windows 服务“Self Host Web API Demo'