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的應用面應該會更廣。

學海無涯,共同進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM