ASP.NET Web API
ASP.NET Web API では、Swashbuckle を使って Swagger ドキュメントを作成します。 具体的な手順は、過去の記事を参照してください。 gooner.hateblo.jpASP.NET Web API で実装したファイルをアップロードする API のドキュメントを Swagger で書く方法を調…
ASP.NET Web API のレスポンスで JSON を返す際に、クエリパラメータで指定したプロパティだけを返したいケースがありました。コントローラークラスのアクションメソッドの戻り値の型は変更せずに、動的にシリアライズするプロパティを変更する方法をまとめ…
ASP.NET Web API では、Swashbuckle を使って Swagger ドキュメントを作成します。 具体的な手順は、過去の記事を参照してください。 gooner.hateblo.jp例えば、GUID 型の ID を指定して取得する API を実装すると、Swagger ドキュメントでは string 型とし…
ASP.NET Web API では、Swashbuckle を使って Swagger ドキュメントを作成します。 具体的な手順は、過去の記事を参照してください。 gooner.hateblo.jpアクションメソッドに FromUri 属性を指定すると、URI のパラメータを自分で定義したクラスにバインドで…
Visual Studio 2015 から追加された .NET Compiler Platform(Roslyn)を使って、ASP.NET Web API 向けの Code Analyzer を作ってみました。 環境構築 Roslyn で Code Analyzer を開発するには、Visual Studio のオプション機能と .NET Compiler Platform SD…
プロキシ サーバーを経由してクラウド上の Web API を呼び出す方法をまとめておきます。プロキシ環境下において、HttpWebRequest や HttpClient を使って通常通りに Web API を呼び出すと、HTTP ステータスコードの 407(Proxy Authentication Required)が…
Azure にデプロイした Web アプリケーションから、SendGrid を使ってメール送信しているのですが、docomo などのキャリアメールが割とバウンスしやすいです。バウンスした原因である受信拒否を解除しても、バウンスリストからメールアドレスを削除しないと、…
この記事は、ASP.NET Advent Calendar 2015 の 8 日目 の記事です。 qiita.com 久しぶりに Swagger を使って ASP.NET Web API のドキュメントを作成してみたら、Swashbuckle の使い方が少し変わっていたので、変更点をまとめておきたいと思います。 Swagger …
HttpClient はとても使いやすいのですが、async / await の非同期処理のデッドロックにハマることがあります。 デッドロック 次のコードは、WPF におけるデッドロックの例です。 #MainWindow.xaml.cs private void Button_Click(object sender, RoutedEventA…
ASP.NET MVC や Web API で、クライアントの IP アドレスを取得する方法をまとめておきます。プロキシサーバーなどを経由して Web サーバーに接続された場合、HTTP ヘッダーの X-Forwarded-For から取得する必要があります。 ASP.NET MVC サーバー環境変数か…
.NET Framework 4.5 から追加された SuppressFormsAuthenticationRedirect プロパティが便利でした。フォーム認証を設定している ASP.NET MVC アプリと同じプロジェクトに ASP.NET Web API を実装した場合、Web API の Controller のアクションメソッドで Ht…
www.buildinsider.net 先月、Build Insider MEETUP with Grani に参加してきました。C# で Web アプリケーションを作るフレームワークの話のなかで、Semantic Logging Application Block(SLAB)が面白そうだったので、試してみました。 SLAB は、Event Trac…
この記事は、ASP.NET Advent Calendar 2014 の2日目の記事です。 qiita.com 「ASP.NET Web API の パフォーマンスを改善するための8つの方法」というブログから、JSON のシリアライズを高速化する方法として、MediaTypeFormatter を Jil JSON Serializer …
まだ、Version 1.0.0 - alpha 1 ですが、Project Helios を使った Web アプリケーションでは、リクエストの実行に使用するワーカースレッドと完了ポートスレッドの数が制限されていました。 気が付いたきっかけは、Azure Web サイトにデプロイして動かした際…
クラウドデザインパターンの Cache-Aside Pattern を ASP.NET Web API で実装してみました。Cache-Aside Pattern は、オンデマンドでデータをキャッシュに効率的に読み込むパターンです。キャッシュ機構には、Azure Redis Cache(Preview)を利用しています…
先週、OWINって何?Microsoft MVPに聞いてみよう! に参加してきました。 connpass.com サブディレクトリに、OWIN の Middleware を適用する方法を教えて頂いたので、試してみました。Web API へのリクエストだけに ロギング Middleware を追加するシナリオ…
gooner.hateblo.jp 前回の投稿では、multipart / form-data を使ってファイルをアップロードしました。ASP.NET Web API において、クライアントから POST されたコンテンツが POST や PUT メソッドの引数にバインディングされるのは、JSON や XML 用の Media…
ASP.NET Web API でファイルをアップロードする際に、Content-Type の異なるデータを送信したかったので、multipart / form-data を使う方法を試してみました。画像ファイルのバイナリデータとファイル名を送信して、Azure Blob Storage にアップロードする…
ASP.NET Web API を利用した大規模なアプリケーションでは、コントローラーを複数のグループに分割し、それぞれのグループで個別に開発したくなります。例えば、ユーザー向け(test1)と管理者向け(test2)の Web API を分けるケースなどがあります。 GET a…
実際に試してみたら、少しハマってしまったので、備忘も兼ねて投稿しておきます。 Azure Storage Client を使って Blob にアクセスできますが、 クライアントに Azure Storage のキーや署名情報を公開したくない アクセスログを取りたい といった要件があっ…
gooner.hateblo.jp 前回の投稿では OWIN でマルチホストしましたが、今回はミドルウェアの Windows Azure Active Directory(WAAD)認証ライブラリを利用して、ASP.NET Web API を OAuth 2.0 認証してみます。元ネタはこちらですが、Visual Studio のテンプ…
OWIN を少し理解できたので、ASP.NET Web API をマルチホストしてみました。コンソールアプリ、IIS の Webアプリ、Windows Azure の WebRole の3つでホスティングします。 ソリューション構成は、こんな感じです。 Web API のロジックをクラスライブラリにす…