OwinSelfHost自宿主的使用


Owin介绍看上篇

Owin将多种应用框架使用统一的接口来实现各框架之间的适配!

新建控制台项目:

添加Nuget包

安装OWIN自宿主的包

1、通过程序包管理器控制台

新建Startup类

/// 
/// OWIN应用程序入口
/// 
public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        HttpConfiguration config = new HttpConfiguration();

        //配置路由
        config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
        );
        //将默认xml返回数据格式改为json
        config.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
        config.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("datatype", "json", "application/json"));

        app.UseWebApi(config);
        // 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
    }
}

添加几个测试用的Controller

其实就是webapi或者webmvc里的controller,这里以webapi为例说明

public class HomeController : ApiController
{
    public string Get()
    {
        return "Hello World";
    }
}

主程序入口启动Owin

int port = 9000;
// 开始参数
StartOptions startOptions = new StartOptions();
startOptions.Port = port;
startOptions.Urls.Add("http://127.0.0.1:" + port);
startOptions.Urls.Add("http://localhost:" + port);

// 设置支持的IP
string name = Dns.GetHostName();
IPAddress[] ipadrlist = Dns.GetHostAddresses(name);
foreach (IPAddress ip in ipadrlist)
{
    if (ip.AddressFamily == AddressFamily.InterNetwork)
        startOptions.Urls.Add("http://" + ip.ToString() + ":" + port);
}

try
{
    WebApp.Start(startOptions);
}
catch (Exception ex)
{
    throw ex;
}

Console.WriteLine("程序已启动, 按任意键退出");
Console.ReadKey();

 浏览器,访问一下URL即可看到时结果了

C