NetCore WebAPI開發探索

 

1、建立項目

新建api項目:html

 

建好以後,一個默認的控制器已經有了:linux

 

 

運行就能夠直接訪問get接口獲取數據:sql

 

 

2、跨平臺部署

部署方面,微軟已經完善的很好了,基本上算是傻瓜式操做。項目右鍵選擇發佈:json

 

部署模式能夠採用框架依賴,或獨立,選擇框架依賴,則須要在目標平臺安裝netcore運行時後才能運行netcore程序。windows

 

平臺能夠選擇windowslinuxcentos

 

發佈完成後,直接運行「dotnet *.dll」便可將api服務創建起來,默認創建http5000端口和https5001端口,可直接訪問。api

 

 

3、客戶端訪問代碼

/// <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);

}

 

4、遇到的問題與解決

  在本機用localhost127.0.0.1等地址訪問都沒問題,當想測試linux環境,在centos虛擬機裏服務運行後,在本機就是沒法訪問,可是在虛擬機內部又是沒問題的。經過搜索引擎查詢並解決,下面是問題與解決方法,排名不分前後。安全

1.運行報錯Couldn't find a valid ICU package installed on the system.服務器

 安裝icu庫,運行命令:yum install icuapp

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 補丁安裝便可。

 http://www.javashuo.com/article/p-nsexnptl-cw.html

 

5、卷尾

Netcoreapi提供了一個新的解決方案,方便用戶採用同一套代碼構建跨平臺程序,大大減小了開發工做量。微軟正在準備NetCore3.0的發佈,面向圖形化界面的開發,發佈後netcore的應用面應該會更廣。

學海無涯,共同進步。

相關文章
相關標籤/搜索