一、創建項目 新建api項目: 建好之後,一個預設的控制器已經有了: 運行就可以直接訪問get介面獲取數據: 二、跨平臺部署 部署方面,微軟已經完善的很好了,基本上算是傻瓜式操作。項目右鍵選擇發佈: 部署模式可以採用框架依賴,或獨立,選擇框架依賴,則需要在目標平臺安裝netcore運行時後才能運行n ...
一、創建項目
新建api項目:
建好之後,一個預設的控制器已經有了:
運行就可以直接訪問get介面獲取數據:
二、跨平臺部署
部署方面,微軟已經完善的很好了,基本上算是傻瓜式操作。項目右鍵選擇發佈:
部署模式可以採用框架依賴,或獨立,選擇框架依賴,則需要在目標平臺安裝netcore運行時後才能運行netcore程式。
平臺可以選擇windows或linux:
發佈完成後,直接運行“dotnet *.dll”即可將api服務建立起來,預設建立http的5000埠和https的5001埠,可直接訪問。
三、客戶端訪問代碼
/// <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); }
四、遇到的問題與解決
在本機用localhost,127.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伺服器超時
Netcore在linux下如果SqlServer2008低於SP3版本,會出現連接超時的問題。只要去官方下載SqlServer 2008 Sp3 補丁安裝即可。
https://www.cnblogs.com/weiweithe/p/7810803.html
五、捲尾
Netcoreapi提供了一個新的解決方案,方便用戶採用同一套代碼構建跨平臺程式,大大減少了開發工作量。微軟正在準備NetCore3.0的發佈,面向圖形化界面的開發,發佈後netcore的應用面應該會更廣。
學海無涯,共同進步。