aspnetcore和json(asp netcore)

本文目錄一覽:

vs新建asp.net項目出現問題?

你沒明白.netcore的運行方式

首先確定你本機已經安裝了dotnetcore sdk

再powershell里運行dotnet –list-sdks可以看出來

然後你再看項目文件夾頂層應該有個global.json啥的,如果沒有,那有可能不是正規的項目,編輯裡面的版本,為你已經安裝的版本,再編譯

另外有些三方庫一般是通過nuget安裝,你打開項目後,項目名右鍵-nuget還原就可以裝相應的庫,要聯網安裝

———-以上是打開現有項目

新建項目就報錯的話,很有可能是你沒安裝相應模塊,再打開vs installer 把.net core 和asp.net相關的都勾上

.net mvc發布到iis之後接口總是被調用兩次,實在查不到原因了?

控制變量法診斷

新建一個最簡單mvc程序,加上log,看會調用兩次嗎

你的程序調試時候沒問題,是發布到iis才調兩次?

現在微軟主推.netcore,也就是不需要iis,只用命令行也可以運行web程序了,你可以試試這個

從調用API接口 看.net framework和 net core的異同

由於.netcore是跨平台使用的,所有微軟重寫好多API,由此有些差異也是正常的。現在就來看下請求API的差別吧。首先,原本的.netframework請求方法:複製代碼publicstaticTHttpPostWithDecompression(stringrequest,stringurl,inttimeout)whereT:new(){varhttpWebRequest=(HttpWebRequest)WebRequest.Create(url);httpWebRequest.Proxy=null;httpWebRequest.Timeout=timeout;httpWebRequest.Method=”POST”;httpWebRequest.ContentType=”application/json”;httpWebRequest.AutomaticDecompression=DecompressionMethods.Deflate|DecompressionMethods.GZip;varbytes=Encoding.UTF8.GetBytes(request);StreamrequestStream=null;varresponseContent=string.Empty;try{requestStream=httpWebRequest.GetRequestStream();requestStream.Write(bytes,0,bytes.Length);varwebResponse=httpWebRequest.GetResponse();varstream=webResponse.GetResponseStream();if(stream!=null){varstreamReader=newStreamReader(stream);responseContent=streamReader.ReadToEnd();streamReader.Close();}webResponse.Close();returnJsonConvert.DeserializeObject(responseContent);}catch(Exceptionexception){returnnewT();}finally{if(requestStream!=null){requestStream.Close();}}}複製代碼第一種返回錯誤編碼的.netcore的寫法:複製代碼publicasyncstaticTaskHttpPostWithDecompression(stringrequest,stringurl,inttimeout)whereT:new(){varhttpWebRequest=(HttpWebRequest)WebRequest.Create(url);httpWebRequest.Proxy=null;httpWebRequest.ContinueTimeout=timeout;httpWebRequest.Method=”POST”;httpWebRequest.ContentType=”application/json”;httpWebRequest.Headers[“Accept-Encoding”]=”gzip,deflate”;//httpWebRequest.AutomaticDecompression=DecompressionMethods.Deflate|DecompressionMethods.GZip;vardata=Encoding.UTF8.GetBytes(request);using(varrequestStream=awaithttpWebRequest.GetRequestStreamAsync())//釋放{requestStream.Write(data,0,data.Length);}stringresult=string.Empty;//響應流using(varresponse=(HttpWebResponse)awaithttpWebRequest.GetResponseAsync()){StreamresponseStream=null;if(response.StatusCode==HttpStatusCode.OK){responseStream=response.GetResponseStream();if(responseStream!=null){varstreamReader=newStreamReader(responseStream,Encoding.UTF8);//獲取返回的信息result=streamReader.ReadToEnd();returnJsonConvert.DeserializeObject(result);}}}returnnewT();}複製代碼查看下.netcore下的屬性和方法:可以明顯發現比.netframwork下少了好多。也就是.netcore的請求類型,更趨於向瀏覽器的請求頭靠攏,也就是使用Headers字典(.netframwork下也有,但是同層級也會有一些屬性,比如採用壓縮)。主要的區別就是響應流採用的是異步的方式,而.netframwork採用同步的方式,必須手動close(),而新的寫法,就只能用using了。但是,上述的這個方法,害死人了,請求也成功,就是編碼始終調試不對,請求各位大神指點一二。由於水平問題,未能解決上述問題,所以小弟採用.netcore的HttpClientHandler類進行http請求:get方法複製代碼//////get請求//////url包含參數publicstaticasyncTaskdoGet(stringurl)whereT:new(){varhandler=newHttpClientHandler(){AutomaticDecompression=DecompressionMethods.GZip};using(varhttp=newHttpClient(handler)){varresponse=awaithttp.GetAsync(url);//確保HTTP成功狀態值response.EnsureSuccessStatusCode();stringresponseStr=response.Content.ReadAsStringAsync().Result;returnJsonConvert.DeserializeObject(responseStr);}}複製代碼post請求複製代碼//////post請求//////url包含參數publicasyncstaticTaskHttpPostWithDecompression(stringrequest,stringapiUrl,inttimeout)whereT:new(){HttpClientHandlerhandler=newHttpClientHandler();handler.Proxy=null;handler.AutomaticDecompression=DecompressionMethods.GZip|DecompressionMethods.Deflate;vardata=Encoding.UTF8.GetBytes(request);using(varhttpClient=newHttpClient(handler)){httpClient.BaseAddress=newUri(apiUrl);httpClient.DefaultRequestHeaders.Accept.Add(newMediaTypeWithQualityHeaderValue(“application/json”));varcont=newStringContent(request);//varcontent=newFormUrlEncodedContent(JsonConvert.DeserializeObject(request));//被上面這個注釋掉的代碼,這種偷懶轉Dic的方式給坑苦了,不能這麼用啊!!!varresponse=awaithttpClient.PostAsync(apiUrl,cont);stringresult=response.Content.ReadAsStringAsync().Result;returnJsonConvert.DeserializeObject(result);}}

Asp.netCore3.0 WebApi從0到1手摸手教你寫【1】簡單的webapi接口

Visual Studio 2019

.net core 3.0

具體步驟如下圖:

此處我們選擇API(新手不推薦選擇空項目,選擇API系統會為我們自動創建WebApi需要的一些配置文件等),Https配置這一項我們暫時不勾選,目前我們不配置Https。

F5運行項目,然後就可以看到微軟為我們寫好的一個天氣預報示例webapi了,這裡只有一個Get請求示例,返回值為json格式。

注意: services.AddControllers(); 和 endpoints.MapControllers(); 方法成對出現, 這是.net core3.0中的最新寫法

ConfigureServices方法

用來向容器中註冊服務,註冊好的服務可以在其他地方進行調用.

Configure方法

用來配置中間件管道,即如何響應http請求.

1 右鍵刪除系統默認創建的 WeatherForecastController.cs 和 WeatherForecast.cs

2 新建一個控制器,命名: UserController.cs

問題來了,為啥直接給打開 weatherforecast ,而且還404了,別急,往下看。

(┬_┬)怎麼還是404?別急繼續往下看

上面增加 action 雖然能達到想要的結果,但是每次新建一個 Controller 都有寫個 action 萬一要是忘記了又要忙乎半天,有沒有一勞永逸的辦法呢?

繼續往下看:

1.首先去掉Controller里的 Route 和 ApiController

2.修改 Startup.cs ,增加路由模版:

今天就到這裡,後期繼續完善我們的webapi。

vscode 開發.net core 1.0 怎麼玩

環境安裝

本文開發的實際環境: win10 x64 VSCode 1.0

下載

.NET Core SDK Installer:

VSCode :

VSCode C#插件:

安裝C#插件

上一篇評論區有很多園友出現 OmniSharp server is not running.

出現這個主要原因是沒有下載下來 OmniSharp server 部分。

這裡大家最好全程掛着代理來安裝,保證OmniSharp 完全下載完畢。

如果大家沒有代理,我給大家封裝了一個 C# 插件 基於OmniSharp 最新版封裝。

安裝好以後就可以直接使用,不會再出現 OmniSharp server is not running.

重磅推薦:點擊下載 (密碼:Caon)注意事項:本插件只適用於 windows x64 系統 ,其他系統請下載官方插件。

安裝插件:直接用VSCode 打開插件文件就可以安裝了。

安裝完以後重啟,出現如上圖所示代表插件安裝成功。

創建項目

1.新建文件夾 netcoredemo

2.創建項目 dotnet new

3.新建NuGet.Config

新建一個 NuGet.Config 將下面內容複製進去。

?xml version=”1.0″ encoding=”utf-8″?

configuration

packageSources

clear /

add key=”AspNetCI” value=”” /

add key=”NuGet.org” value=”” /

/packageSources

/configuration

4.使用VSCode 打開 netcoredemo

打開netcoredemo 文件夾,會有一個提升點擊Yes 就可以了。

第一次打開項目會發現報一些錯誤,已經為你自動生成launch.json,以及會讓你自動還原相關引用。

這裡要在project.json 做一點改動。

“dependencies”: {

“Microsoft.NETCore.App”: {

“type”: “platform”,

“version”: “1.0.0-rc2-*”

}

},

將 Microsoft.NETCore.App version 版本改為 1.0.0-rc2-*

更改以後F1 dotnet restore 重新還原一次引用就可以了。

配置調試

1.調試

點擊調試,會發現無法進行調試,斷點斷不下來。

這裡我們需要做一個配置。

打開project.json 文件 在節點: compilationOptions 加入: “debugType”: “portable”

“compilationOptions”: {

“debugType”: “portable”

},

編輯好以後保存,重新打開VSCode 。

再點擊調試,發現斷點已經可以斷下,查看參數等操作都可以正常進行。

2.開發

智能提示提供強大支持。

這樣我們就可以開發.NET Core 程序,同時可以使用VSCode 調試 .NET Core 程序。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/276899.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-19 13:20
下一篇 2024-12-19 13:20

相關推薦

  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分布式文件系統(HDFS)。HDFS是一個可擴展性高的分布式…

    編程 2025-04-29
  • 如何使用Newtonsoft datatable轉Json

    Newtonsoft DataTable 是一個基於.NET的JSON框架,也是一個用於序列化和反序列化JSON的強大工具。 在本文中,我們將學習如何使用Newtonsoft Da…

    編程 2025-04-28
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • 使用Python獲取JSON並解析

    本文將介紹如何使用Python獲取JSON數據並解析相關內容。通過使用Python的第三方庫,我們可以輕鬆地處理JSON數據,包括讀取、提取和操作JSON數據。 一、獲取JSON數…

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 使用Spread 8展示JSON數據

    使用Spread 8可以方便地展示JSON數據,本文將詳細介紹如何利用Spread 8展示JSON數據。 一、Spread 8簡介 Spread 8是一款強大的電子表格軟件,可以方…

    編程 2025-04-27
  • 如何在json轉實體類時忽略大小寫

    本文將從以下幾個方面介紹如何在json轉實體類時忽略大小寫。 一、使用Gson庫實現json轉實體類忽略大小寫 Gson是Google提供的Java JSON操作庫,它提供了簡單易…

    編程 2025-04-27
  • C# 中 JSON null 不顯示的處理方法

    本文將為大家介紹在 C# 中處理 JSON null 不顯示的解決方法。 一、null 不顯示的問題 在使用 C# 進行 JSON 數據處理的時候,經常會遇到 null 值不顯示的…

    編程 2025-04-27
  • Hive解析JSON詳解

    一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,具有結構清晰、易於讀寫、便於解析等特點。它基於JavaScript的一…

    編程 2025-04-25

發表回復

登錄後才能評論