.NET

WCF の BasicHttpBinding を使ったセルフホストで HTTPS を構成してみた

はじめに WCF で HTTPS を構成できるか試すことになった。 しかも IIS を使わず、セルフホストで。 サービスコントラクトの定義 using System.ServiceModel; namespace WcfHttpsSample.Shared { [ServiceContract] public interface ISampleService { [Opera…

HatenaBookmarkSharp - はてなブックマーク REST API C# クライアント

はじめに HatenaBookmarkSharp っていう、はてなブックマーク REST API の C# クライアントを書いた。 developer.hatena.ne.jp www.nuget.org github.com モチベーション 自分が現在作っているアプリではてなブックマーク REST API を呼び出したい場面があり…

Azure SQL Database に接続する WCF サービスの Windows コンテナを Azure Kubernetes Service で動かす

はじめに Azure SQL Database に接続する WCF サービスを、Windows コンテナのプロセス分離モードで動かすところまで漕ぎつけた。 tnakamura.hatenablog.com 一連の実験もいよいよ今回で最後。Azure SQL Database に接続する WCF サービスを、Azure Kubernet…

Azure SQL Database に接続する WCF サービスを Windows コンテナのプロセス分離モードで動かす実験

はじめに 最近、自分の中で Docker 熱、というか Windows コンテナ熱が再燃。Windows コンテナのプロセス分離モードで WCF サービスをホストするのと、Windows コンテナの中から Azure SQL Database に繋ぐところまでは、以前実験した。 tnakamura.hatenablo…

ASP.NET Core Identity で主キーに値オブジェクトを使う方法

はじめに ドメイン駆動設計のパターンの一つである値オブジェクトを実践するようになってから、ASP.NET Core Identity でユーザーの ID の型 が string なことに恐怖を感じるようになった。ユーザー ID を表す値オブジェクトじゃないと安心してコード書けな…

Swashbuckle.AspNetCore.Cli と OpenAPI Generator を使って Web API のクライアントを生成する

はじめに Swashbuckle.AspNetCore を使うことで、ASP.NET Core MVC で実装した Web API に Swagger UI を組み込める。 docs.microsoft.com Web API の動作確認をする程度ならこれで十分だけど、せっかく Swagger/OpenAPI を使うなら、クライアントのソースコ…

https にリダイレクトすると Authorization ヘッダーが失われる

はじめに HttpClient を使って http で Authorization ヘッダー付きのリクエストを送信し、https にリダイレクトされると、https のリクエストには Authorization ヘッダーが付かない。 以下、実験コード。 Web API HTTP リクエストのヘッダーをログに出力し…

認証スキームの異なる複数の JWT Bearer 認証を構成してみた

はじめに ASP.NET Core で JWT Bearer 認証を使うときに Startup.ConfigureServices で呼び出す AddJwtBearer は、 任意の authenticationScheme を指定できる。 となると、authenticationScheme さえ重複しなければ複数回呼び出しても問題ない、はず。 気に…

ProxyKit を使ってリバースプロキシを実装する

はじめに ASP.NET Core で実装した Web API の前段にリバースプロキシを置く必要がありそう。 しかも、そのリバースプロキシはデータベースにある情報を使ってリクエストの振り分けを行わなければならないため、 プログラマブルなリバースプロキシが求められ…

.NET Framework 4.8 で動いている Web API を .NET Core 3.1 で動いている IdentityServer4 で保護する

はじめに 大人の事情によって .NET Framework 4.8 で動かさざるをえない ASP.NET Core 2.2 製 Web API を、OAuth2.0 か OpenID Connect に対応させる必要があり、IdentityServer4 を使う予定でいた。 その IdentityServer4 は 5/1 時点で v3.1.3 が最新。も…

コードファースト ASP.NET Core gRPC でのインターセプター利用

はじめに protobuf-net.Grpc を使ってコードファーストに ASP.NET Core gRPC サービスを実装する場合でも、 ASP.NET Core の JWT Bearer 認証ミドルウェアを使うことができそうだ、 というところまで前回確認できた。 tnakamura.hatenablog.com Authorizatio…

コードファースト ASP.NET Core gRPC での JWT Bearer 認証の利用

はじめに ASP.NET Core gRPC は ASP.NET Core のミドルウェアをサポートしているけど、 protobuf-net.Grpc を使ってコードファーストで実装する場合でも、 JWT Bearer 認証が使えるか試してみた。 Shared プロジェクトを作成 毎度おなじみの、 クライアント…

コードファースト ASP.NET Core gRPC でのヘッダーの利用

はじめに WCF では OperationContext の IncomingMessageHeaders と OutgoingMessageHeaders を使って、 カスタムヘッダーをクライアントから送ったり、サーバーから返したりできた。 tnakamura.hatenablog.com gRPC には Metadata という同じような機能があ…

コードファースト ASP.NET Core gRPC ストリーミング編

はじめに 先日、WCF から gRPC に移行するときの手段として、.proto ファイルを書くのではなく、protobuf-net.Grpc を使って C# のコードから gRPC のクライアントとサーバーを動的に生成する方法を紹介した。コードファースト ASP.NET Core gRPC と命名。 t…

コードファースト ASP.NET Core gRPC

この記事は、C# その2 Advent Calendar 2019 の二日目の記事です qiita.com はじめに コードファーストで開発したい protobuf-net.Grpc コードファースト ASP.NET Core gRPC をやってみる .NET Core ライブラリ作成 NuGet パッケージ追加 データコントラクト…

WPF の ListView で ToolTip を表示する方法メモ

久しぶりの WPF。 ListView の各行にツールチップを表示する方法を調べたのでメモを残しておく。 <ListView> <ListView.ItemContainerStyle> <Style TargetType="{x:Type ListViewItem}"> <Setter Property="ToolTip" Value="{Binding Path=MyToolTipText}"/> </Style> </ListView.ItemContainerStyle> <ListView.View> <GridView> </gridview></listview.view></listview>

Windows コンテナのプロセス分離モードでコンテナ外の SQL Server に接続する実験

はじめに 先日、Windows コンテナのプロセス分離モードで WCF サービスを動かすことに成功した。 tnakamura.hatenablog.com お次はコンテナ外の SQL Server に接続できるか実験してみる。 これに成功したら、いよいよ本格的なアプリケーションを動かす実験に…

WCF サービスを Windows コンテナのプロセス分離モードで動かす実験

はじめに 先日、ASP.NET Core アプリを Windows コンテナのプロセス分離モードで動かす実験を行った。 tnakamura.hatenablog.com 本業で抱える .NET Framework の資産は、ASP.NET Core よりも WCF の方が大多数なので、 次は WCF サービスをコンテナ化する実…

ASP.NET Core のホステッドサービスとして WCF サービスを動かす

ASP.NET Core には HostedService という機能があって、 バックグラウンドタスクなんかを実装するのに使えたりする。 docs.microsoft.com 上のドキュメントでは、そのものずばりバックグラウンドタスクを実装しているわけだけど、 WCF サービスも実行できる…

GraphQL.NET の DataLoader

GraphQL でネストしたデータを取得するクエリを発行するとき、 N+1 問題を回避するために、 ネストしたデータの先読み込みか遅延読み込みを行う必要がある。 先読み込みの場合は、クエリのリゾルバ内で Entity Framework Core の Include を使って実装できる…

GraphQL.NET でのページネーション

GraphQL でコレクションデータの取得やページネーションを実現する場合、 Relay 由来の Connection や Edge といったインタフェースを定義するのが定石になっているみたい。 GraphQL.NET はそれらをサポートしていて、ConnectionType や EdgeType といった型…

HTTP.sys でホストした Web API で Windows 認証と JWT Bearer 認証を共存させる

ASP.NET Core MVC で実装した Web API を HTTP.sys でホストすることで、利用に Windows 認証が必要な Web API を実現できた。 tnakamura.hatenablog.com これでひと段落と思いきや、JWT Bearer 認証もサポートする必要が出てきたので、HTTP.sys でホストし…

.NET Core で形態素解析を行うメモ

.NET Core で日本語の文章の形態素解析がしたくなった。 日本語の形態素解析エンジンでまず思いつくのは MeCab。 その MeCab を .NET に移植した NMeCab を最初使うつもりだったんだけど、 残念ながら NMeCab は .NET Core にまだ対応していなかった。 それ…

.NET Core でログを Google Stackdriver に保存するメモ

.NET Core ではロギングに Microsoft.Extensions.Logging を使っていて、 コンソールや EventSource なんかによく出力していたんだけど、 今は Google Cloud Platform で遊んでいるので Stackdriver に保存したくなった。 NuGet 用に公式のパッケージがある…

.NET Core で Google Cloud Storage にファイルをアップロードするメモ

Microsoft Azure を使っていた頃は重要なファイルのバックアップ先に Azure Storage を利用していたが、 最近は Google Cloud Platform で遊んでいるので、Google Cloud Storage を使ってみることにした。 NuGet に公式のクライアントライブラリが存在するの…

ASP.NET Core MVC アプリケーションの Docker コンテナを Heroku で動かしてみた

以前、最小の ASP.NET Core アプリケーションの Docker コンテナを Heroku で動かせた。 ただ、ASP.NET Core MVC アプリケーションでは、Heroku 上で NuGet パッケージの復元を実行しようとしていて失敗。 NuGet パッケージの復元で失敗するのなら、復元の必…

WCF on .NET Core

.NET Core でも WCF を使うことはできる。提供されているのはクライアントライブラリだけなので、.NET Core で動く WCF サービスを作ることはできないけど。 試しに TCP でやってみた。WCF サービスは .NET Framework で作るしかない。 using System; using …

.NET Core 時代のコマンドライン引数解析

.NET でコンソールアプリケーションを開発するときの悩みの種が、コマンドライン引数の解析。 .NET Framework がコマンドラインパーサーを提供してくれないので、 仕方なくオレオレパーサーを書いたり、Mono にあるライブラリを使ったりしてきたけど、 .NET …

.NET Core で Shift-JIS を扱う

例えば .NET Core でテキストファイルを出力するとき、文字コードに Shift-JIS を指定するには System.Text.Encoding.CodePages が必要だった。 www.nuget.org using System; using System.IO; using System.Text; namespace EncodingSample { class Program…

NuGet CLI でパッケージをダウンロード

NuGet CLI の install コマンドで、指定した場所にパッケージをインストールできた。依存パッケージもインストールしてくれた。 nuget install Microsoft.EntityFrameworkCore -o .\NuGetPackages packages.config を指定してもいい。ただ、この場合 package…