C# ASP.NET WebApi服务器搭建详解 - 自承载(Self Hosting)
C# ASP.NET WebApi服务器搭建详解 - 自承载(Self Hosting)
参考文章:
C# ASP.NET WebApi服务器搭建详解 - IIS服务承载(IIS Hosting IIS宿主)
C# ASP.NET WebApi服务器搭建详解 - Win服务承载(Windows Service Hosting宿主)
搭建自承载(Self Hosting)ASP.NET WebApi服务器操作步骤:
1. 在VS解决方案建立控制台应用程序,改名:CSFramework.WebAPI.Demo.SelfHosting

2. 在CSFramework.WebAPI.Demo.SelfHosting项目,点右键管理NuGet程序包,添加以下包:
HTML Code:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.AspNet.Cors" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
<package id="Microsoft.Owin" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Cors" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Host.HttpListener" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Host.SystemWeb" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Hosting" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Security" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net45" />
<package id="Owin" version="1.0" targetFramework="net45" />
</packages>
//来源:C/S框架网(www.csframework.com) QQ:23404761
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.AspNet.Cors" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.7" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net452" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net45" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
<package id="Microsoft.Owin" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Cors" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Host.HttpListener" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Host.SystemWeb" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Hosting" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Owin.Security" version="4.1.0" targetFramework="net45" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net45" />
<package id="Owin" version="1.0" targetFramework="net45" />
</packages>
//来源:C/S框架网(www.csframework.com) QQ:23404761

3. 打开Program.cs,添加启动服务器的代码, WebApp.Start
C# Code:
class Program
{
static void Main(string[] args)
{
try
{
string serverURL = "http://localhost:17818/";
Console.WriteLine("C# ASP.NET WebApi服务器搭建详解 - 自承载(Self Hosting)");
Console.WriteLine("正在启动WebApi Server :" + serverURL + " ....");
using (WebApp.Start<StartupAppBuilder>(url: serverURL))
{
Console.WriteLine("启动WepApi 服务器成功.");
Console.WriteLine("............");
Console.ReadLine();
}
}
catch (Exception ex)
{
string msg = ex.Message;
if (ex.InnerException != null) msg = msg + "\r\n" + ex.InnerException.Message;
Console.WriteLine("启动WepApi 服务器异常:" + msg);
Console.ReadLine();
}
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
class Program
{
static void Main(string[] args)
{
try
{
string serverURL = "http://localhost:17818/";
Console.WriteLine("C# ASP.NET WebApi服务器搭建详解 - 自承载(Self Hosting)");
Console.WriteLine("正在启动WebApi Server :" + serverURL + " ....");
using (WebApp.Start<StartupAppBuilder>(url: serverURL))
{
Console.WriteLine("启动WepApi 服务器成功.");
Console.WriteLine("............");
Console.ReadLine();
}
}
catch (Exception ex)
{
string msg = ex.Message;
if (ex.InnerException != null) msg = msg + "\r\n" + ex.InnerException.Message;
Console.WriteLine("启动WepApi 服务器异常:" + msg);
Console.ReadLine();
}
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
4. StartupAppBuilder.cs,WebApi服务器配置
C# Code:
public class StartupAppBuilder
{
public static void Configuration(IAppBuilder appBuilder)
{
// 在应用程序启动时运行的代码
//加载WebApi服务器配置信息
HttpConfiguration config = new HttpConfiguration();
//配置路由
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
//配置JSON格式化
GlobalConfiguration.Configuration.Formatters.Insert(0, new PlainTextTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm";
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
config.Formatters.Remove(config.Formatters.XmlFormatter);
// 解决json序列化时的循环引用问题
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
//config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
// 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new UnderlineSplitContractResolver();
//使用配置
appBuilder.UseWebApi(config);
appBuilder.UseStageMarker(PipelineStage.PostAcquireState);
//链接控制器
//Type C1 = typeof(CSFramework.WebAPI.Demo.DemoController);
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
public class StartupAppBuilder
{
public static void Configuration(IAppBuilder appBuilder)
{
// 在应用程序启动时运行的代码
//加载WebApi服务器配置信息
HttpConfiguration config = new HttpConfiguration();
//配置路由
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
config.MapHttpAttributeRoutes();
//配置JSON格式化
GlobalConfiguration.Configuration.Formatters.Insert(0, new PlainTextTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm";
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
config.Formatters.Remove(config.Formatters.XmlFormatter);
// 解决json序列化时的循环引用问题
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
//config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
// 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new UnderlineSplitContractResolver();
//使用配置
appBuilder.UseWebApi(config);
appBuilder.UseStageMarker(PipelineStage.PostAcquireState);
//链接控制器
//Type C1 = typeof(CSFramework.WebAPI.Demo.DemoController);
}
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
5. 启动服务器,在IE内测试接口:输入http://localhost:17818/api/demo/get

....本文完....
.NET WebApi开发框架|MVC框架|后端框架|服务端框架-标准版V1.0
适用开发:快速构建支持多种客户端的服务端程序,支持APP、B/S、C/S跨平台移动终端等。
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)简介
CSFramework.WebApi是服务端快速开发框架(后端框架),借助ASP.NET WebAPI底层架构的强大编程能力,封装成为可复用的以及可定制开发的服务端软件模板,CSFramework.WebApi提供可复用的软件架构和开发包,为用户快速轻松搭建基于HTTP协议、HTTPS协议以及支持多种客户端(如:APP、B/S、C/S、微信公众号、微信小程序等)各种跨平台移动终端的服务端应用程序。
服务端应用开发、后端接口开发是软件项目重要工作环节,服务端注重业务逻辑、数据处理和数据分析、算法等方面的设计和服务,前端主要体现在用户体验、界面操作和数据采集方面。前端软件系统和后端服务架构共同搭建跨平台大型数据管理应用系统。
:

![]()
参考文档:
C# ASP.NET WebApi服务器搭建详解 - Win服务承载(Windows Service Hosting宿主)
C# ASP.NET WebApi服务器搭建详解 - IIS服务承载(IIS Hosting IIS宿主)
ASPNET WebApi服务器三种承载方式:SelfHosting,IIS Hosting, WinService Hosting
运行ASP.NET 自承载WebApi服务器报错:未能加载文件或程序集System.Web.Http或它的某一个依赖项
原创WebApi框架:采用HTTPS协议SelfHosting,Windows服务承载WebApi服务
WebApi快速开发框架,C# ASP.NET后端开发平台
Asp.Net开源服务端框架,WebApi后端框架标准版
微信小程序后端框架 | C# ASP.NET服务端WebApi快速开发框架平台
1.1 什么是ASP.NET / WebAPI / MVC?|C/S开发框架
微信小程序使用https协议的WebApi后端应用服务(Win服务宿主或自承载)
C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务自承载WebApi服务器) - C/S框架网原创
WebApi,ASP.NET 发布Web应用报错:未能获得项目引用“”的依赖项
基于Owin自承载Microsoft.AspNet.WebApi服务器NuGet程序包运行环境
ASP.NET WebApi框架异步实现MultipartContent方式上传文件
什么是ASP.NET WebApi控制器(APIController)?
ASP.NET WebApi缺少System.Web.Http.Cors引用解决方案
C# ASP.NET WebApi服务器搭建详解 - Win服务承载(Windows Service Hosting宿主)
C# ASP.NET WebApi服务器搭建详解 - IIS服务承载(IIS Hosting IIS宿主)
ASPNET WebApi服务器三种承载方式:SelfHosting,IIS Hosting, WinService Hosting
运行ASP.NET 自承载WebApi服务器报错:未能加载文件或程序集System.Web.Http或它的某一个依赖项
原创WebApi框架:采用HTTPS协议SelfHosting,Windows服务承载WebApi服务
WebApi快速开发框架,C# ASP.NET后端开发平台
Asp.Net开源服务端框架,WebApi后端框架标准版
微信小程序后端框架 | C# ASP.NET服务端WebApi快速开发框架平台
1.1 什么是ASP.NET / WebAPI / MVC?|C/S开发框架
微信小程序使用https协议的WebApi后端应用服务(Win服务宿主或自承载)
C#.NET IP端口绑定SSL证书支持HTTPS协议(用于Win服务自承载WebApi服务器) - C/S框架网原创
WebApi,ASP.NET 发布Web应用报错:未能获得项目引用“”的依赖项
基于Owin自承载Microsoft.AspNet.WebApi服务器NuGet程序包运行环境
ASP.NET WebApi框架异步实现MultipartContent方式上传文件
什么是ASP.NET WebApi控制器(APIController)?
ASP.NET WebApi缺少System.Web.Http.Cors引用解决方案
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服

