zoukankan      html  css  js  c++  java
  • NetCore WebAPI开发探索

     

    一、创建项目

    新建api项目:

     

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

     

     

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

     

    二、跨平台部署

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

     

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

     

    平台可以选择windowslinux

     

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

     

    三、客户端访问代码

    /// <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 补丁安装即可。

     https://www.cnblogs.com/weiweithe/p/7810803.html

    五、卷尾

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

    学海无涯,共同进步。

  • 相关阅读:
    version negotiation failed (we support version 0x01, peer supports version 0x04
    Ryu-SDN-IP
    ryu No module named
    ryu ImportError: No module named ryu.cmd.manager
    Cannot find required service quagga in /etc/init.d/
    sdx-ryu(一)
    Oracle Day01 数据库基础
    HTML+CSS Day11产品网站
    HTML+CSS Day10实例
    HTML+CSS D09 定位
  • 原文地址:https://www.cnblogs.com/zhanglb163/p/11047054.html
Copyright © 2011-2022 走看看