这篇来讲讲WebApi的自托管,WebApi可以托管到控制台/winform/服务上,并不是一定要依赖IIS才行。

1、首先新建控制台项目,在通过Nuget搜索Microsoft.AspNet.WebApi.SelfHost

Web APi入门之Self-Host(二)-LMLPHP

2、建立实体类

     public class Product
{
public int Id { set; get; }
public string Name { set; get; }
public string Description { set; get; }
}

3、创建WebApi控制器,继承ApiController

     public class HomeController : ApiController
{
static List<Product> modelList = new List<Product>()
{
new Product(){Id=,Name="电脑",Description="电器"},
new Product(){Id=,Name="冰箱",Description="电器"},
}; //获取所有数据
[HttpGet]
public List<Product> GetAll()
{
return modelList;
} //获取一条数据
[HttpGet]
public Product GetOne(int id)
{
return modelList.FirstOrDefault(p => p.Id == id);
} //新增
[HttpPost]
public bool PostNew(Product model)
{
modelList.Add(model);
return true;
} //删除
[HttpDelete]
public bool Delete(int id)
{
return modelList.Remove(modelList.Find(p => p.Id == id));
} //更新
[HttpPut]
public bool PutOne(Product model)
{
Product editModel = modelList.Find(p => p.Id == model.Id);
editModel.Name = model.Name;
editModel.Description = model.Description;
return true;
}
}

4、在Program的Main方法中加上如下代码

         static void Main(string[] args)
{
var config = new HttpSelfHostConfiguration("http://localhost:5000"); //配置主机 config.Routes.MapHttpRoute( //配置路由
"API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional }); using (HttpSelfHostServer server = new HttpSelfHostServer(config)) //监听HTTP
{
server.OpenAsync().Wait(); //开启来自客户端的请求
Console.WriteLine("Press Enter to quit");
Console.ReadLine();
}
}

5、本人机器是win10,如果直接运行是会报错的

Web APi入门之Self-Host(二)-LMLPHP

解决方法:打开项目路径找到项目名.exe文件右键以管理员身份运行

Web APi入门之Self-Host(二)-LMLPHP

6、通过url方式访问 http://localhost:5000/api/home

Web APi入门之Self-Host(二)-LMLPHP

通过winform、服务等方式托管的话本篇不再讲述,方式都类似,我觉得WebApi托管在IIS上是好于其他方式的,用控制台的话演示还是不错的。

下篇讲下WebApi跨域。

05-26 22:24