顯示具有 asp.net core 標籤的文章。 顯示所有文章
顯示具有 asp.net core 標籤的文章。 顯示所有文章

2024年12月11日 星期三

2023年8月29日 星期二

我的 Line Bot 6歲了

 






寫 Line Bot 可以學到很多技術,讓我成長不少,資料的交換,程式的更新/佈署,資料庫的選擇及 Line 顯示方式,Open AI API串接等

當初寫了 2個 bot ,一個是分機查詢,另一個就是我的小鹿了,年下班時間的付出讓功能一直改進、增加,增加功能的同時,也在網路上獲得許多先進不吝嗇分享寶貴知識、看法,讓我這個低能力的韭菜也可以慢慢的成長,有更多知識吸收,吸收愈多就會再把它轉成有用的功能

6年下來讓我的心靈和實體方面都有成長,雖然離目標還有一大段,希望我的小鹿頭好壯壯,持續變強讓我快速找到好標的讓基礎持續變大,每年有 5%以上。 感恩。

2023年5月4日 星期四

.Net Entity Framework Core for SAP HANA

 參考文件 :   Connect Using the Microsoft Entity Framework Core (EF Core)

1.先下載 HDBClient 並安裝,在新的版本才會有 dotnetcore目錄及 dll檔

目前只支援 Entity Framework Core 6的版本,所以記得專案 .csproj 的 PackageReference 版本只能是 6如 6.0.14,不能是最新版本的 7.0.0 ,不然會出現 Method not found: 'Void CoreTypeMappingParameters..ctor 的錯誤

 

2023/12/29 新版的 HDBClient開始支援 7版,請參考  Entity Framework Core Support (SAP HANA Data Provider for Microsoft ADO.NET)

2019年7月22日 星期一

ASP.NET Core 2.2 Web API讀取 Request.Body時出現 BadHttpRequestException: Reading the request body timed out due to data arriving too slowly

參考 BadHttpRequestException: Reading the request body timed out due to data arriving too slowly

原本在 1.* Web API 的版本上執行正常的程式升級為 2.2時出現  BadHttpRequestException: Reading the request body timed out due to data arriving too slowly
出錯錯誤的程式碼為

StreamReader sr = new StreamReader(Request.Body);
string str = await sr.ReadToEndAsync();

專家找出的問題應該是 tread 的問題,我的環境是在 CentOS 7上,使用 docker佈署 Web API的程式,目前文章上有三種作法
第一種在 Startup.cs ConfigureServices 加上下列程式碼
services.Configure<KestrelServerOptions>(options =>{
options.Limits.MinRequestBodyDataRate = new MinDataRate(1, TimeSpan.FromMinutes(5));
options.Limits.MinResponseDataRate = new MinDataRate(1, TimeSpan.FromMinutes(5));
options.Limits.MaxRequestBodySize = 100000000;
});

2019年7月11日 星期四

使用 Dockerfile建置 ASP.NET Core 2以上使用的 Image

參考 Exploring the .NET Core MCR Docker files (updated): runtime vs aspnet vs sdk

在參考文章有詳細的說明
要使用 mcr開頭,如 FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

使用 ASP.NET Core連結 MongoDB Atlas

MongoDB Atlas 說明 (官網的文件寫的非常詳細,對於初學者有很大幫助)
Download .NET Core 2.2
ASP.NET Core 2.2 簡介 
Visual Studio Code (參考 使用Visual Studio Code开发.NET Core看这篇就够了 安裝 C#)

MongoDB Atlas是官方 MongoDB雲端的方案,可以建立一個 Free Tier Cluster,容量大小是有限制的。

MongoDB對於各語言都有對應的 driver,對 C#也有很好的支持, 2017年 12月就使用 ASP.Net Core 1.x的版本連結至 Atlas時,在本機端 (Windows)是沒有問題的,但因為我想使用 docker + jenkins佈署程式到 CentOS卻發生問題,後來在 MongoDB官網說明,.Net Core library在 Linux or OSX不支援 SNI TLS Extension,所以無法連到 Atlas Free Tier Cluster,所以後續開發程式改用別的方法進行。

但最近 MongoDB官網提出新的說明,只要使用 .Net Core 2.1以上的版本就可以開始連線,這部分用 Visual Studio Code使用 ASP.NET Core 2.2進行程式測試,在本機端 (Windows) OK,用 Docker在 CentOS上測試也沒問題。

2019年1月6日 星期日

ASP.Net Core 2.2 on Docker with certification

如果要使用自己的自制憑證和跑在 docker上,我的 dockerfile和 appsetting.json檔案參考如下:

docker file
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

WORKDIR /app
 
ENV ASPNETCORE_URLS https://*:443
EXPOSE 443

COPY . /app

ENV ASPNETCORE_ENVIRONMENT production

ENTRYPOINT ["dotnet", "xxxxx.dll"]


appsetting.json
{
  "ConnectionStrings": {
      ................................................
  },
  "Logging": {
         .....................................
  },

  "Kestrel": {
    "Certificates": {
      "Default": {
        "Path": "certificate_file_name.pfx",
        "Password": "xxxxxxxxxxxxxxx"

      },
      "AllowInvalid": "true"
    }
  }
}

ASP.Net Core 2.2 在 Docker container使用 EF Core連結 SQL Server出現問題

參考:SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase.

在 windows 環境下直接執行 asp.net core 2.2的程式透過 entity framework core連接 SQL server是沒有問題的情況,想說放在 docker上執行,但一直發生 timeout的情況,後來找到一篇文章提到要更新 SQL Server的 patch到最新的版本試試。

Asp.Net Core 2.2 使用 HttpClient 連結 SSL網址處理方法

參考: [faq]解決C#呼叫有ssl憑證問題的網站出現遠端憑證是無效的錯誤問題

加上 handler處理


var handler = new HttpClientHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback =
    (httpRequestMessage, cert, cetChain, policyErrors) =>
{   
  return true;
};
var client = new HttpClient(handler);

2018年6月8日 星期五

.Net Core Roadmap 2.1 - Video

.Net Core Roadmap 2.1 Part 1




 .Net Core Roadmap 2.1 Part 2

Asp.Net Core 2.1 實作 https超簡單

參考資料
ASP.NET Core 2.1 roadmap
Enforce HTTPS in ASP.NET Core (2.1)

之前開發 1.0時,因為我的程式會直接包成 docker image並佈署在 CentOS上,要設定網頁強制走 https好像不是那麼容易,想不到在 2.1的版本上,微軟很給力的讓整個設定變方便了,真的要給個讚

在 2.1基本產生的專案,在 development mode就會預設給你一個 ceterficate用,不用擔心憑證從那裡來

2017年8月17日 星期四

Asp.Net Core 2.0 Razor Pages - MVC外的新選擇

如果你在學 Asp.Net MVC時對其目錄結構,不是那麼容易了解的話,現在在 Core 2.0提供一個 Razor Pages讓以前寫 Asp.Net Web Form的使用者能夠更容易上手

相關文章參考:
ASP.NET Razor Pages vs MVC – How do Razor Pages fit in your toolbox?
Introduction to Razor Pages in ASP.NET 

為什麼比較容易懂 ?

  1. 用 code behind的方式,在 Pages目錄下,一個 .chhtml 對應到一個 .cs檔案
  2. 以前在 Controller目錄下,一個 Controller Class內部不止針對網頁回傳而且也會有ajax回傳資料的方法,但在 Razor Page的目錄下就只會針對其 csthml實作 OnGet, OnPost方法,比較單純
  3. 使用 annotation [BindingProperty]作 databinding, cs file本身就是 model file

    reference from ASP.NET Razor Pages vs MVC – How do Razor Pages fit in your toolbox?

.NET Core 2.0正式釋出

有人說使用微軟的東西,要 2.0才開始進去玩,如 ASP.Net 2.0 ,  .Net Framework 2.0等,這次 .NET Core 2.0發表了,有興趣的朋友可以開始玩囉,不過我覺得 .NET Core 1.1就很好用,感覺 2.0的專案又跟 1.*的不太一樣,要花點時間了解


微軟.NET Core 2.0正式版出爐!


2017年7月31日 星期一

🌟🌟🌟使用 ASP.Net Core Web API 開發 Line bot, messaging api可以顯示 emoji或 sticons的圖示 💗💗💗

使用 ASP.Net Core Web API 實作 Line Bot webhook callback 開發系統,可以傳貼圖、文字,但我希望可以在傳文字時加上表情符號或 emoji的圖示,原本是到 https://www.emoji.codes/ 網址,搜尋到圖示後找到對應的代碼如 :star:,再把字串填入在回傳字串內,這樣的作法,圖示會正常顯示在電腦版的 Line上,但手機版的 Line就無法正常顯示了。

第二種作法就是在 .Net Core加上一個 negut libaray  Unicode.net ,直接在回傳字串加上 Emoji.圖示代碼,比如 Emoji.Heart,這樣手机版、電腦版就都可以顯示,只不過圖示會有所不同。


2017年3月31日 星期五

.Net Core 佈署到 docker上出現錯誤 The library 'libhostpolicy.so' required to execute the application was not found

使用 VS 2015建一個新 ASP.Net Core專案,再手動升級到 1.1後佈署到 docker時,出現無法正常執行的狀況,使用 docker logs @ConteainName時就出現 The library 'libhostpolicy.so' required to execute the application was not found錯誤訊息,可是之前也用同樣的方式也把另一個專案放在 docker上是沒有問題了,後來發現其原因可能發生在我把專案 package在使用 nuget升級時,原本
Microsoft.NetCore.App這個部份被改寫了,原本在 project.json的寫法如下:
 "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    }

升級後就變成
 "Microsoft.AspNetCore.App": "1.1.0",  => type的設定就不見了

所以只要再把成如下寫法,把 type加回去即可
 "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    }

參考文件
Every Other "dotnet run" command fails with `libhostpolicy.so` error #5059

2016年12月28日 星期三

.Net Core HttpClient GetAsAsync執行時過慢問題

參考文章: HttpClient.GetAsync is slow in dnxcore50 compared to dnx461

MVC 5就用過 HttpClient,一切正常,但在開發 Line Bot時用 HttpClient呼叫已經在服務的 API時就發生斷片問題,但也不是常常發生,本來以為是我程式寫法的問題,後來追蹤時發現會一直卡在 GetAsAsync,所以上網也找到相關文章,其建議是在產生 HttpClient時先新增一個 HttpClientHandler並把其 attribute UseProxy設為 false, 這樣應該可以改善速度的問題,改寫之後果然不會再發生過慢的問題了。

2016年12月26日 星期一

Use Line Bot to search extensions and MVPN numbers of the enterprise

Last time I shared my first Line Bot 使用 ASP.Net Core Web API 實作 Line Bot webhook callback. It is a funny bot to show what kind of person is by entering a name. if you enter a name "Catton", it would answer "He is a handsome man."

Because of first bot, it gave me a inspiration to develop another Lin Bot that could facilitate to contact  other colleagues easily. Especially for the enterprise that already has implemention of MVPN.

First of all, here is the wiki to introduce what is MVPN, Mobile virtual private network.  You can dial a short number, maybe 5 or 4 digits, to communicate the colleague whose mobile phone is in your enterprise MVPN group.

Inside the enterprise, I can build a web to search someone's extension or MVPN number by entering name, employee number or department name. Here is the screenshot of web-searching.




















2016年12月18日 星期日

使用 asp.net core實作一個類 google blog的網站



 

之前有分享過 試作 CKEditor 圖片選擇器 ( image upload ),利用 ckeditor和客制 image picker
來達成圖片選取,但是圖片的處理、儲存還沒實作完成,最近剛好寫完預算系統,所以利用空檔來繼續完成這個部份,完成工作內容如下:

2016年12月7日 星期三

ASP.NET Core Render View to String in Controller

參考文章:
ASP.NET Core Render View to String
Render a Razor View containing a URL to a string in ASP.NET Core

這個目的是直接在 controller直接產生 partial view的字串再回傳至 view ajax result,然後直接把某個 element換掉或作內文休改,這種方式當然也有其它的方式達成,但直接在 contorller內產生 view string也是可以試試,因為在 Asp.net MVC 5也有類似的作法或是直接使用 westwind的 library。但在 Asp.net Core就不能直接拿來用。所以參考上面的分享文章就可以達到目的了。