我有一个简单的WebApi2应用程序,可以处理各种REST请求。它本质上是SQL Server数据库上各种CRUD操作的前端。到目前为止,我从来没有从Visual Studio外部运行它,但我通常不做Windows特定的事情,但我在这里。
我的目标是将这个webapp的功能构建到Windows桌面应用程序中(或者至少能够从windows程序控制webapp),主要是因为用户可以启动Webapp,停止它,看看谁是连接它等,但我不知道如何连接这个特定的点集。谷歌实际上是一件非常艰难的事情。
WebApp部分也需要在启动时告诉一些事情(只是字符串,所以如果答案涉及执行各种系统命令行告诉WebApp启动/停止/等等我可以传递我需要的内容以某种方式在命令行上,这很好)。
最终,目标是向用户提供安装程序,除非他真的想要,否则他不必知道有涉及的网络服务器。
那么我将如何完成这一部分呢? (如果这个问题太模糊,请告诉我原因,并在必要时对其进行修改。)
答案 0 :(得分:0)
Web API的一个优点是能够在IIS等Web服务器之外托管。例如,您可以在Windows窗体应用程序中托管它。这是关于如何实现这一目标的article with detailed instructions
。
你将有一个Startup
类用于引导:
public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
然后只是启动听众的问题:
using (WebApp.Start<Startup>("http://localhost:8080"))
{
Console.WriteLine("Web Server is running.");
Console.WriteLine("Press any key to quit.");
Console.ReadLine();
}
这将在本地端口8080上提供您的Web API,您的应用程序可以向其发送HTTP请求。
因此,您所寻找的关键字基本上是:self hosting asp.net web api
。