1.前言
在我们开发应用程序的过程中,应用程序之间往往是需要相互之间进行通讯的,即便是一个窗口应用程序或者Winform应用程序。如何简单的将两个应用程序之间进行数据传递,我们目前通常的做法就是使用WebAPI、WebService、RPC等对外提供接口。我们这里的做法就是如何将WEBAPI寄宿在C#的窗口应用程序中。
2.引入dll包
我这里使用的NuGet方式管理dll包;
2.1.引入jar包
右键项目的引入功能,选择:管理BuGet程序包
在浏览里面搜索:WebApi.OwinSelfHost
点击右侧的安装即可,我这边之前安装过所有出现的是卸载与更新
?2.2.启动WebApi服务
在Program类Main方法中增加WebApp.Start方法
class Program
{
static void Main(string[] args)
{
string baseURL="http://*:8080/";
WebApp.Start<WebApiConfig>(baseURL);
Log.Instance.Show("Start up web api...");
}
}
编写WebApiConfig类
public class WebApiConfig
{
public void Configuration(IAppBuilder app)
{
var webApiConfiguration = ConfigureWebApi();
app.UseWebApi(webApiConfiguration);
}
private HttpConfiguration ConfigureWebApi()
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/xml"));
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/javascript"));
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Routes.MapHttpRoute(
name: "OpenApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
return config;
}
}
最后添加Controller以及对应自己业务处理类
public class OpenController: ApiController
{
[HttpPost]
public Result test([FromBody] Param param)
{
Result backResult = new Result();
....
backResult.Object="返回结果";
backResult.Result = 200;
backResult.Message = "succeed";
}
}
代码中的Result是我自已定义的统一返回样式。
3.最后
当我们打包生成应用程序后,双击.exe启动后,WebApi服务就会被启动。
|