欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

NetCore WebAPI开发探索

程序员文章站 2022-06-19 17:02:59
一、创建项目 新建api项目: 建好之后,一个默认的控制器已经有了: 运行就可以直接访问get接口获取数据: 二、跨平台部署 部署方面,微软已经完善的很好了,基本上算是傻瓜式操作。项目右键选择发布: 部署模式可以采用框架依赖,或独立,选择框架依赖,则需要在目标平台安装netcore运行时后才能运行n ......

 

一、创建项目

新建api项目:

 NetCore WebAPI开发探索

建好之后,一个默认的控制器已经有了:

 NetCore WebAPI开发探索NetCore WebAPI开发探索

NetCore WebAPI开发探索

 

运行就可以直接访问get接口获取数据:

 NetCore WebAPI开发探索

 

二、跨平台部署

部署方面,微软已经完善的很好了,基本上算是傻瓜式操作。项目右键选择发布:

 NetCore WebAPI开发探索

部署模式可以采用框架依赖,或独立,选择框架依赖,则需要在目标平台安装netcore运行时后才能运行netcore程序。

 NetCore WebAPI开发探索

平台可以选择windowslinux

 NetCore WebAPI开发探索

发布完成后,直接运行“dotnet *.dll”即可将api服务建立起来,默认建立http5000端口和https5001端口,可直接访问。

 NetCore WebAPI开发探索

 

三、客户端访问代码

/// <summary>

/// post函数

/// </summary>

/// <param name="url">服务器post地址</param>

/// <param name="args">api参数</param>

async void postdata(string url, string[] args)

{

    var httpclient = new httpclient();

    //post数据序列化

    var json = newtonsoft.json.jsonconvert.serializeobject(args);

    var stringcontent = new stringcontent(json);

    stringcontent.headers.contenttype = new mediatypeheadervalue("application/json");

    //设定安全协议,不然访问默认的netcore地址会报错:基础流已关闭

    servicepointmanager.securityprotocol =  securityprotocoltype.tls11;

    var response = await httpclient.postasync(url, stringcontent);

    var str = await response.content.readasstringasync();

    console.writeline("post:" + str);

}

 

四、遇到的问题与解决

  在本机用localhost127.0.0.1等地址访问都没问题,当想测试linux环境,在centos虚拟机里服务运行后,在本机就是无法访问,但是在虚拟机内部又是没问题的。通过搜索引擎查询并解决,下面是问题与解决方法,排名不分先后。

1.运行报错couldn't find a valid icu package installed on the system.

 安装icu库,运行命令:yum install icu

2.防火墙问题

   (1) 查看状态:firewall-cmd --state

   (2) 关闭防火墙:systemctl stop firewalld

3.外部无法访问

 默认的localhost只能本地访问,需要在代码中指定:webhost.createdefaultbuilder(arg).useurls("http://*:5000") .usestartup<startup>();

 或在部署是直接指定:dotnet *.dll --urls http://*:5000

4.连接sqlserver2008r2服务器超时

 netcorelinux下如果sqlserver2008低于sp3版本,会出现连接超时的问题。只要去官方下载sqlserver 2008 sp3 补丁安装即可。

 

 

五、卷尾

netcoreapi提供了一个新的解决方案,方便用户采用同一套代码构建跨平台程序,大大减少了开发工作量。微软正在准备netcore3.0的发布,面向图形化界面的开发,发布后netcore的应用面应该会更广。

学海无涯,共同进步。