c#

ASP.NET Identity でユーザーを作成するときは必ず UserManager を使うこと

c#

マイグレーションで Seed データを投入するとき、 ユーザーを作成するところで UserManager を使わずに、 IdentityDbContext を使って直接データベースに保存してしまっていた。 そのせいで、ログインするときに ClaimsIdentityFactory が内部でクレームを作…

C# でも匿名型でインタフェースを実装できたらいいのにとたまに思う

c#

たとえば public interface IDomainEventHandler { bool CanHandle(IDomainEvent e); void Handle(IDomainEvent e); } というインタフェースがあるとき EventBus.Register(new IDomainEventHandler { public bool CanHandle(IDomainEvent e) { return e is P…

Entity Framework でオブジェクトが変更監視中かどうか調べる方法メモ

c#

DbSet<TEntity>.Local プロパティを調べればわかった。 public class Customer { // Entity Framework 用コンストラクタ protected Customer() { } public Customer(string name) { Name = name; } public int Id { get; private set; } public string Name { get; pr</tentity>…

ASP.NET Identity でカスタムクレームを使う

c#

マルチテナントな Web サービスを作っていて、 どのテナントかの判断を現在ログインしているユーザーが持っているテナント ID で判断している。 そのため、HttpContext.User.Identity.GetUserId() で取得したユーザー ID を使って、 データベースからユーザ…

Heroku で最小の ASP.NET 5 アプリを動かす

Heroku が .NET サポートを予定しているのか知らないけど、 Github には heroku/dotnet-buildpack という ASP.NET 5 用のビルドパックがある。 github.com これを使えば ASP.NET 5 アプリを Heroku で動かせると思いきや、 Mac OSX で作成したプロジェクトを…

C# で Phantom Type もどき

c#

Phantom Type (幽霊型)っていうのを知った。 インスタンスの状態をメンバフィールドではなく型パラメータで持つことで、 状態チェックをコンパイル時に行えるテクニック。 なにそれ凄い。 型パラメータに指定するだけで、 インスタンス化したりメソッド呼ん…

ASP.NET MVC で Excel ファイルを出力

c#

Open XML SDK を使えば C# で Excel ファイル (.xlsx) を出力できた。 tnakamura.hatenablog.com 先日のサンプルではファイルに出力したけど、 SpreadsheetDocument はストリームへの出力にも対応している。 今度は Excel ファイルをダウンロードできる ASP.…

Open XML SDK を使って Excel ファイルを出力

c#

C# で Excel ファイルを出力する場合、.xls ファイルだと Microsoft.Office.Interop を使う ExcelCreator を購入して使う という選択肢があった。 Microsoft.Office.Interop は Excel のインストールが必要だし、 ExcelCreator は有料だしと、 趣味のアプリ…

最小の ASP.NET 5 アプリを Docker で動かす

はじめに yo のジェネレーターを使って ASP.NET 5 プロジェクトを作成したら、 次のような Dockerfile も含まれていた。 FROM microsoft/aspnet:1.0.0-beta7 COPY project.json /app/ WORKDIR /app RUN ["dnu", "restore"] COPY . /app EXPOSE 5000 ENTRYPOI…

Mac OS X に ASP.NET 5 開発環境を構築

はじめに そろそろ自宅の MacBook Pro にも ASP.NET 5 の開発環境を作るとしよう。 .NET Version Manager (DNVM) をインストール Homebrew を使ってインストールする。 brew tap aspnet/dnx brew update brew install dnvm Zsh の設定に追加して、dnvm コマ…

ViewBag vs ViewModel

c#

ASP.NET MVC 5 プロジェクトを新規作成したら、HomeController が ViewBag を使ってビューにデータを渡している。 一方、『Entity Framework を使用した、ビューがある MVC5 コントローラー』を追加すると、 Entity Framework を使って取得したデータを View…

『C#エンジニア養成読本』読んだ

Sansan の記事が読みたくて購入。 Git でバージョン管理 カスタマイズした Git Flow で開発を進める NUnit で自動テスト Jenkins + MSBuild で CI Pivotal Tracker でイシュー管理 Slack でコミュニケーション という感じの内容で、 スタートアップでよく見…

WSDL から XML Web サービスのソースコードを生成

c#

WSDL から XML Web サービスを生成する機能を Visual Studio で探したけど、 見つけられなかったのでコード書いてみた。 System.Web.Services.Description 名前空間にある ServiceDescription と ServiceDescriptionImporter、 あと CodeDom を使って生成で…

『C# 実践開発手法』読んだ

本書が主張する『アダプティブコード』とは、 コードを大幅に変更することなく、新しい要求やシナリオに対処する適応力のあるコード。 そのアダプティブコードを実現するためのキーがインターフェイス。 インターフェイスのみに依存することで、実装の変更に…

LINQ で左外部結合

c#

いつも忘れて、その度ネットで調べているので、ブログにメモしておく。 DefaultIfEmpty を使うのがポイント。 using System; using System.Linq; namespace LinqLeftOuterJoinSample { public class Sector { public int Id { get; set; } public string Nam…

『.NET のエンタープライズアプリケーションアーキテクチャ第2版』読んだ

本書の内容は、.NET に限らず Java や他の言語でも適用できそうだ。 ただ、内容を理解するにはドメイン駆動開発や GoF のデザインパターン、 Martin Fowler のエンタープライズアプリケーションアーキテクチャパターン等の知識が必要。 ドメイン駆動開発はま…

ASP.NET MVC で二重サブミットを防止したい

c#

フォームなんかでボタンをうっかりダブルクリックしちゃって二重に投稿されてしまうのを防ぎたい。 クリックしたらボタンを無効にできればなお良し。 単純に JavaScript でボタンクリックされたら無効にするイベントハンドラ書けばいいと思ってたら、クライ…

Visual Studio 2015 の ASP.NET 5 プロジェクトを Windows7 でビルドするには PowerShell 3.0 以上が必要だった

c#

Visual Studio 2015 で ASP.NET 5 プロジェクトをビルドしようとしたら DNX SDK バージョン 'dnx-clr-win-x86.1.0.0-beta5' のインストールに失敗しました。 ソリューションでは、このセッション用に DNX SDK バージョン 'dnx-clr-win-x86-1.0.0-beta5' を使…

Rails の flash みたいに ASP.NET MVC の TempData を使ってみた

c#

Rails の flash と同じことが ASP.NET MVC でもやりたくて、 ミドルウェア自作するしかないかなぁって思っていたんだけど、 TempData で同じことができそうだった。 ただ、TempData を素で使うとキーを typo しそうなので、次のように拡張メソッド使っている…

ASP.NET MVC で WebForms の Chart を使って作成したチャートを PDF に埋め込む

c#

ASP.NET MVC で System.Web.UI.DataVisualization.Charting.Chart を使って、 レーダーチャートをカスタマイズできるところまでは確認できた。 ASP.NET MVC で WebForms の Chart をカスタマイズする - presenttnakamura.hatenablog.com 今度は iTextSharp …

ASP.NET MVC で WebForms の Chart をカスタマイズする

c#

System.Web.UI.DataVisualization.Charting.Chart を使って ASP.NET MVC で レーダーチャートを表示できた。 ASP.NET MVC で WebForms の Chart を使う - presenttnakamura.hatenablog.com 今度はレーダーチャートをカスタマイズしてみる。 カスタマイズ内容…

ASP.NET MVC で WebForms の Chart を使う

c#

System.Web.Helpers.Chart クラスを使うと、 ASP.NET MVC で手っ取り早くチャートを作成できた。 ASP.NET MVC でチャートを表示 - presenttnakamura.hatenablog.com System.Web.Helpers.Chart はなかなか高機能だけど、 カスタマイズしづらい。 XML 形式の文…

LINQ でランキングを作成

c#

LINQ でランキングを作成するサンプルを書いてみた。 using System; using System.Linq; namespace LinqRankingSample { class Student { public string Name { get; set; } public int Score { get; set; } } class Program { static void Main(string[] ar…

Microsoft Azure の Cloud Services のデプロイで嵌った

c#

嵌ったのでメモ。 WCF Service WebRole を含む Cloud Service を、Visual Studio 2013 Update 4 で Microsoft Azure にデプロイしたら、 パッケージを作るところでエラー発生。 Could not load file or assembly ‘Microsoft.WindowsAzure.Packaging, Version…

WCF で呼び出されたサービスのメソッド名とクライアントのIPアドレスを OperationContext から取得するメモ

c#

OperationContext の IncomingMessageHeaders や IncomingMessageProperties から取り出せる。 でもこれくらいはプロパティで用意しておいて欲しいな。 public static class OperationContextExtensions { // 実行中のサービスのオペレーション名を取得 publ…

ASP.NET MVC 5 で JavaScript を使ったページを PDF に変換する

c#

先日 TuesPechkin を使って、ASP.NET MVC 5 のビューを PDF に変換できることを確認した。 ASP.NET MVC 5 でビューを PDF に変換 - present ASP.NET MVC 5 でビューを PDF に変換 - present TuesPechkin は wkhtmltopdf のラッパーで、wkhtmltopdf は JavaSc…

WCF って TPL をサポートしていたのか

c#

ものすごく今さらだけど、知らなかった。 というか、試そうともしていなかった。 using System; using System.ServiceModel; using System.ServiceModel.Channels; using System.Threading.Tasks; namespace WcfAsyncSample { [ServiceContract] public inte…

ASP.NET MVC 5 でビューを PDF に変換

c#

以前、iTextSharp を使って ASP.NET MVC で PDF を作成する方法を試した。 ASP.NET MVC で PDF を作成 - present ASP.NET MVC で PDF を作成 - present ただ、実現したいのは「表示している HTML を PDF でダウンロードする機能」なので、 iTextSharp だと H…

ASP.NET MVC 5 のコントローラーでアクションの URL を作成する

c#

コントローラーでも UrlHelper を使ってアクションの URL を作成できたのでメモしておく。 var helper = new UrlHelper(ControllerContext.RequestContext); var indexPath = helper.Action("Index", "Home"); // => / var indexUrl = helper.Action("Index"…

ASP.NET MVC 5 でビューから文字列を作成する

c#

ASP.NET MVC 5 でビューが描画する HTML を、そのままレスポンスとして返すんじゃなくて、 いったん文字列で変数に格納したかったのでやってみた。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web…