銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

.NET Core

ASP.NET Core 3 Web APIで例外をスローして、指定したステータスのレスポンスを返す

ASP.NET Core Web APIでアプリケーションロジック内では例外を投げておいて、共通処理として例外をキャッチして例外に応じたステータスコードとメッセージのレスポンスを返したい場合があるかと思います。ASP.NET Framework やCore 2.2まであったHttpRespons…

DateTimeとTimeSpanの書式文字列が違うという話

知ってればそれだけなのですが、System.DateTimeとSystem.TimeSpanでは指定できる書式文字列が異なります。知らずによくわからないエラーを出して一瞬困りました。 たとえば、DateTimeオブジェクトで時間のところで HH:mm:ss という形式で出力したい場合は次…

.NET Core で暗号論的疑似乱数生成器を使ってソルトを作成し、PBKDF2でパスワードのハッシュ化を試みる

この時代、自前でパスワードの管理などしたくはないのですが、しないといけないケースもあるでしょう。最低限やらないといけないこととしては、ソルト生成した上でハッシュ化したパスワードを保存することではないでしょうか。.NET Coreでこれらの処理を行う…

.NET CoreでUTCのISO8601形式の時刻文字列から指定のタイムゾーンに変換する

例えば 2020-03-23T12:00:00.000Z というUTCでのISO8601形式の文字列をパースしたうえで、指定したタイムゾーンでの時間に変換したいとします。2020-03-23T12:00:00.000Zであれば、日本標準時(UTC+9)で2020年3月23日21時です。これは次のようなコードで処理…

.NET CoreでWindowsとLinuxでタイムゾーンを識別するID表記が異なるという話

最近、ASP.NET CoreでTimeZoneまわりのコード書いてて遭遇しました。以前このブログ読んだ記憶はあるのですが、すっかり忘れていました。そして、.NET Core 3でもそのままなんだなというのがわかりました。 devblogs.microsoft.com .NET Coreで特定のTimeZon…

Visual Studio 2019 Launch Event in Tokyoで.NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能について話しました

Visual Studio 2019 Launch Event in Tokyoを開催しまして、登壇もしました。 connpass.com 発表資料はこちらです。 .NET Core向けコンテナおよびデバッグ関連のVisual Studio 2019の機能 from Takayoshi Tanaka www.slideshare.net 今回、手持ちのノートPC…

.NET Core on OpenShift でのHTTPSサポートの紹介

ひとりAdvent Calendar 14日目です。 adventar.org ASP.NET Core 2.1からHTTPS対応の改善が入っています。 blogs.msdn.microsoft.com OpenShift上の.NET Coreでもこれをサポートするサンプルが提供されていて以下のブログで解説されています。それを紹介して…

.NET Core コンソールアプリをOpenShiftのcronjobとして動かす

ひとりAdent Calendar13日目です。 adventar.org 昨日紹介したbinary artifactsのビルドを使って、.NET Core コンソールアプリをcronjobとして動かしてみます。

OpenShift で ASP.NET CoreアプリをBinary Artifactsとしてデプロイしてみる

ひとりAdvent Calendar 12日目です。 adventar.org 今日は手元でビルトした.NET CoreアプリのバイナリをアップロードしてOpenShiftにデプロイできるBinary Artifactsデプロイを試してみます。

.NET Coreでダンプファイルを解析できる ClrMD を試してみた

ひとりAdvent Calendar 11日目です。 adventar.org ClrMDと呼ばれているMicrosoft.Diagnostics.Runtime.dllが.NET Coreに対応したと聞いて試してみました。プロセスへのアタッチやダンプファイルの解析で、SOS and PSSCORといったツールを使ってやっているこ…

.NET Coreにおける新元号対応について

MVPグローバルサミットに参加している最中に新元号対応が気になったのでマイクロソフトのエンジニアに聞いてみたら、publicなissueで議論しようということだったので立ててみました。するとあっという間に回答が来たので、日本語で簡単にまとめてみようと思…

FedoraやRHELの.NET CoreでVisual Studio CodeでのC# コード編集支援機能が使えない場合の対処法

.NET Core 2.0でRHELもcsproj形式をサポートしたり、Fedoraもサポートされるようになったのですが、Red HatやFedoraコミュニティから提供されている.NET Core SDKを入れた状態でVisual Studio CodeでC#プロジェクトを開いてもプロジェクトをロードできないと…

ふくてん Fukuoka .NET Conf で ASP .NET Coreのセッションをしました

国内では初めて東京近郊以外の地域*1でセッションしました。資料はこちらです。 ASP.NET Core のお気に入りの機能たち (docker向け) from Takayoshi Tanaka www.slideshare.net セッションで紹介した(しようとした)サンプルコードのGitHubリンクはこちらで…

Red Hat Container Development Kit を使って、.NET Core on Linux containerを無料で体験する

先日の記事に続いて、Red Hat Developer Programを利用しての無料体験の宣伝です。 developers.redhat.com .NET Core on RHEL (Red Hat Enterprise Linux Server)はRHELサーバー上でも動くのですが、Container Platform製品であるOpenShift上での利用もおす…

OpenShift で .NET Core 2.0を使いはじめる

先日、Red Hat版*1の.NET Core 2.0がリリースされました。 tech.tanaka733.net Getting Started Guide - Red Hat Customer Portal 続いてOpenShiftでも利用可能なコンテナやテンプレートも提供されました。OpenShift本体のアップデートとは別ものとして、イ…

Red Hat版 .NET Core 2.0 のリリースや、OpenShiftのWindows Server Containerサポートなどが発表されました

Red HatとMicrosoftが協力している技術分野に関して立て続けにプレスリリースが発表されています。いくつかの内容についてはすでに発表済みですが、再度まとめての記事になっているようです。 www.redhat.com www.redhat.com news.microsoft.com 技術的な詳…

ASP.NET Core 2.0 preview 2 では C# 7.1 の構文がRazor Viewの中で使えなかった話

このissueのやり取りがすべてなんですが、備忘録として残しておきます。 github.com

2017年 .NET Core 1.x (Visual Studio 2017) プロジェクト向け AppVeyor での自動ビルドの設定

ChatWork 向けのC# クライアントを開発していて、ここ1~2年は更新していなかったものの、最近.NET Core対応させたり、API endpoint v2に対応したりしてまた更新するようになりました。 github.com 2年前にAppVeyorで自動ビルド環境を作っていましたが、当時…

Y8 2017 spring in Shibuya で .NET Core on Linux の内部について話しました

Y8 2017 Spring という技術系ノンジャンル(と私は理解している)イベントがあったので登壇してきました。CFPにリアクションして頂いたみなさまありがとうございました。こちらが資料です(更新するかもしれないです)。 doc.co イベントサイトはこちら。 y8-201…

Chatwork.Api をnetstandard1.6とnet45対応しました

ChatWorkのAPIエンドポイントがv2に変わる対応を公開したのですが、同時に0.5では.NET Frameworkでは使えなかったので0.6.1で.NET Framework 4.5でも使えるようにしました。 www.nuget.org

clrdbg は vsdbg にリプレースされました

以前このような記事を書いて、先日同じ手順を実行しようとしたらVisual Studio Codeは最早clrdbgをサポートしなくなりました、といった類のメッセージが出てデバッグできなくなっていました。 tech.tanaka733.net 確認してみると、Visual Studio CodeのC#拡…

Visual Studio 2017 で ASP.NET Coreプロジェクトでdockerデバッグしたいときはソリューションディレクトリを作らないといけない件

タイトルだけで言いたいことは以上なんですが、Visual Studio 2017でASP.NET Coreプロジェクトを作ってdockerサポートを有効化すると、こんな風にdocker-composeプロジェクトが作られてDocker for Windowsの上のDockerコンテナを使ってデバッグ実行ができる…

VisualStudio 2017 RC3 から .NET Core on RHEL にリモートデバッグする

VisualStudio 2017 RC3からリモートデバッグのプロトコルにSSHが選択できるようになり、Linux上の.NET Coreプロセスにアタッチすることができるようになりました*1。 blogs.msdn.microsoft.com これは、以前ブログに書いたdocker上の.NET Coreプロセスをリモ…

ASP.NET Core でローカライズする場合のリソースファイル名について

ASP.NET Coreのローカライズする際のリソースファイル名についてこのドキュメントを読んで気になったことがあったのでまとめました。 Globalization and localization | Microsoft Docs ローカライズそのものについてはこのドキュメントを参考にしてください…

.NET Core on Linux で systemd scriptでプロセス管理する (手抜き版)

ASP.NET Core でLinuxでホストする場合、以前の公式ドキュメントではsupervisorを使う方法が紹介されていました。ただ、CentOSやRHELだとEPELリポジトリにあるしなあと思っていたら、いつの間にか公式ドキュメントがsystemdを利用したサンプルに変わっていま…

ASP.NET Core MVC で static fileを認証ユーザーのみに公開する

ASP.NET Core MVCでstatic fileを公開する場合、基本的には用意されている Static File Middlewareを使うと便利です。以下のドキュメントに詳しく書いてあります。 Working with Static Files | Microsoft Docs が、このMiddlewareを使うとファイルは認証な…

ASP.NET Core で複数Webサーバーでセッションを共有するときは、IDistributedCacheとIDataProtectionに注意しないといけない話

ASP.NET Core Advent Calendar 13日目です。 qiita.com 初日にSignalRでエントリ書きましたが、もともと予定していたセッションについて簡単に追いかけてみましょう。ASP.NET Core でSessionを使う場合、まずはこのドキュメントを読むのがよいでしょう。 Man…

Visual Studio から AzureやWindows以外のdocker containerで走るASP.NET Core をリモートデバッグする

空いていたので予定を早めて Visual Studio Advent Calendar 12日目のエントリを書きます。 qiita.com Windows上のdockerやAzure Container ServicesであればVisual Studio Tools for Dockerを使えばVisual StudioからASP.NET Coreのアプリにリモートデバッ…

Linux でも C# 7 を使いたい

C# Advent Calendar 10日目の記事です。 qiita.com C# 7のリリースが近づいてきている(はず)のですが、専らC# 7の記事はVisual Studioで試しましたというのが多く、.NET Core on Linuxでは試せないのか?という疑問がありました。現時点では、.NET Core 1.0 …

Linux の dotnet restore は大文字HTTP_PROXYを認識しない、あるいは curlコマンドは大文字HTTP_PROXYを認識しない件

微妙にハマったので、書いておきます。.NET Core CLI のdotnet restoreコマンドをプロキシ環境下のLinux*1で使う場合、環境変数http_proxyは小文字で設定する必要があります。ちなみにこれはcurlコマンドでも同じです。ちなみにhttps_proxyもしくはHTTPS_PRO…