ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

ASP.NET Web API

ファイルをアップロードする API の Swagger ドキュメントを書く

ASP.NET Web API では、Swashbuckle を使って Swagger ドキュメントを作成します。 具体的な手順は、過去の記事を参照してください。 gooner.hateblo.jpASP.NET Web API で実装したファイルをアップロードする API のドキュメントを Swagger で書く方法を調…

ASP.NET Web API で返す JSON のプロパティを指定する

ASP.NET Web API のレスポンスで JSON を返す際に、クエリパラメータで指定したプロパティだけを返したいケースがありました。コントローラークラスのアクションメソッドの戻り値の型は変更せずに、動的にシリアライズするプロパティを変更する方法をまとめ…

ASP.NET Web API の Swagger ドキュメントでコメントを改行する

ASP.NET Web API では、Swashbuckle を使って Swagger ドキュメントを作成します。 具体的な手順は、過去の記事を参照してください。 gooner.hateblo.jp例えば、GUID 型の ID を指定して取得する API を実装すると、Swagger ドキュメントでは string 型とし…

ASP.NET Web API の Swagger ドキュメントからパラメータのモデル名を削除する

ASP.NET Web API では、Swashbuckle を使って Swagger ドキュメントを作成します。 具体的な手順は、過去の記事を参照してください。 gooner.hateblo.jpアクションメソッドに FromUri 属性を指定すると、URI のパラメータを自分で定義したクラスにバインドで…

Roslyn で ASP.NET Web API 向けの Code Analyzer を作ってみた

Visual Studio 2015 から追加された .NET Compiler Platform(Roslyn)を使って、ASP.NET Web API 向けの Code Analyzer を作ってみました。 環境構築 Roslyn で Code Analyzer を開発するには、Visual Studio のオプション機能と .NET Compiler Platform SD…

プロキシ環境下で Web API を呼び出す

プロキシ サーバーを経由してクラウド上の Web API を呼び出す方法をまとめておきます。プロキシ環境下において、HttpWebRequest や HttpClient を使って通常通りに Web API を呼び出すと、HTTP ステータスコードの 407(Proxy Authentication Required)が…

SendGrid Bounces API でバウンスリストからメールアドレスを削除する

Azure にデプロイした Web アプリケーションから、SendGrid を使ってメール送信しているのですが、docomo などのキャリアメールが割とバウンスしやすいです。バウンスした原因である受信拒否を解除しても、バウンスリストからメールアドレスを削除しないと、…

Swagger 2.0 に対応した ASP.NET Web API のドキュメントを作成する

この記事は、ASP.NET Advent Calendar 2015 の 8 日目 の記事です。 qiita.com 久しぶりに Swagger を使って ASP.NET Web API のドキュメントを作成してみたら、Swashbuckle の使い方が少し変わっていたので、変更点をまとめておきたいと思います。 Swagger …

HttpClient を使って同期で通信する

HttpClient はとても使いやすいのですが、async / await の非同期処理のデッドロックにハマることがあります。 デッドロック 次のコードは、WPF におけるデッドロックの例です。 #MainWindow.xaml.cs private void Button_Click(object sender, RoutedEventA…

ASP.NET でクライアントの IP アドレスを取得する

ASP.NET MVC や Web API で、クライアントの IP アドレスを取得する方法をまとめておきます。プロキシサーバーなどを経由して Web サーバーに接続された場合、HTTP ヘッダーの X-Forwarded-For から取得する必要があります。 ASP.NET MVC サーバー環境変数か…

SuppressFormsAuthenticationRedirect プロパティが便利だった件

.NET Framework 4.5 から追加された SuppressFormsAuthenticationRedirect プロパティが便利でした。フォーム認証を設定している ASP.NET MVC アプリと同じプロジェクトに ASP.NET Web API を実装した場合、Web API の Controller のアクションメソッドで Ht…

Semantic Logging Application Block で ETW ログを Azure Search に出力する

www.buildinsider.net 先月、Build Insider MEETUP with Grani に参加してきました。C# で Web アプリケーションを作るフレームワークの話のなかで、Semantic Logging Application Block(SLAB)が面白そうだったので、試してみました。 SLAB は、Event Trac…

ASP.NET Web API で Jil JSON Serializer を使ってみる

この記事は、ASP.NET Advent Calendar 2014 の2日目の記事です。 qiita.com 「ASP.NET Web API の パフォーマンスを改善するための8つの方法」というブログから、JSON のシリアライズを高速化する方法として、MediaTypeFormatter を Jil JSON Serializer …

Helios を使うとワーカースレッド数が制限されていた話

まだ、Version 1.0.0 - alpha 1 ですが、Project Helios を使った Web アプリケーションでは、リクエストの実行に使用するワーカースレッドと完了ポートスレッドの数が制限されていました。 気が付いたきっかけは、Azure Web サイトにデプロイして動かした際…

ASP.NET Web API で Azure Redis Cache を利用する

クラウドデザインパターンの Cache-Aside Pattern を ASP.NET Web API で実装してみました。Cache-Aside Pattern は、オンデマンドでデータをキャッシュに効率的に読み込むパターンです。キャッシュ機構には、Azure Redis Cache(Preview)を利用しています…

OWIN の Middleware をサブディレクトリに適用する

先週、OWINって何?Microsoft MVPに聞いてみよう! に参加してきました。 connpass.com サブディレクトリに、OWIN の Middleware を適用する方法を教えて頂いたので、試してみました。Web API へのリクエストだけに ロギング Middleware を追加するシナリオ…

ASP.NET Web API で MediaTypeFormatter を追加する

gooner.hateblo.jp 前回の投稿では、multipart / form-data を使ってファイルをアップロードしました。ASP.NET Web API において、クライアントから POST されたコンテンツが POST や PUT メソッドの引数にバインディングされるのは、JSON や XML 用の Media…

ASP.NET Web API で multipart / form-data を使ってファイルをアップロードする

ASP.NET Web API でファイルをアップロードする際に、Content-Type の異なるデータを送信したかったので、multipart / form-data を使う方法を試してみました。画像ファイルのバイナリデータとファイル名を送信して、Azure Blob Storage にアップロードする…

ASP.NET Web API のコントローラーをグループ化する

ASP.NET Web API を利用した大規模なアプリケーションでは、コントローラーを複数のグループに分割し、それぞれのグループで個別に開発したくなります。例えば、ユーザー向け(test1)と管理者向け(test2)の Web API を分けるケースなどがあります。 GET a…

ASP.NET Web API を経由して Azure Blob Storage にアクセスする

実際に試してみたら、少しハマってしまったので、備忘も兼ねて投稿しておきます。 Azure Storage Client を使って Blob にアクセスできますが、 クライアントに Azure Storage のキーや署名情報を公開したくない アクセスログを取りたい といった要件があっ…

OWIN で ASP.NET Web API を Windows Azure Active Directory 認証する

gooner.hateblo.jp 前回の投稿では OWIN でマルチホストしましたが、今回はミドルウェアの Windows Azure Active Directory(WAAD)認証ライブラリを利用して、ASP.NET Web API を OAuth 2.0 認証してみます。元ネタはこちらですが、Visual Studio のテンプ…

OWIN で ASP.NET Web API をマルチホストする

OWIN を少し理解できたので、ASP.NET Web API をマルチホストしてみました。コンソールアプリ、IIS の Webアプリ、Windows Azure の WebRole の3つでホスティングします。 ソリューション構成は、こんな感じです。 Web API のロジックをクラスライブラリにす…