ROMANCE DAWN for the new world

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

Azure Functions で SendGrid の Event Webhook からの通知を受け取ってみる

Build 2016 報告会で LT した内容を記事にまとめておきます。 gooner.hateblo.jp Azure Functions を利用して、SendGrid の Event Webhook から POST されたデータを受け取り、Azure DocumentDB に登録してみます。従来の方法については、過去の記事で書いて…

Build 2016 報告会に参加して LT してきました

thinkit.connpass.com 昨日、Build 2016 報告会に参加して LT してきました。speakerdeck.com 決選投票まで残りましたが、残念ながら de:code の参加チケットは当たりませんでした。でも、Azure Functions の面白さを多少でも伝えることができたと思いますし…

Azure SDK 2.7 以前のサポート終了について

先日、Azure SDK 2.9 がリリースされてましたが、Azure SDK 2.2 ~ 2.7 について、2017年4月3日にサポートを終了することが告知されています。 Support and Retirement Information for the Azure SDK for .NET and APIsAzure SDK 2.9 をインストールした環…

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…

Entity Framework Core 1.0 で SQLite を使ってみる

UWP

UWP でローカルデータベースを使いたかったので、 Entity Framework Core 1.0(旧 Entity Framework 7)で SQLite をコードファーストで試してみました。 Entity Framework Core 1.0 をインストールする Visual Studio で作成した UWP のプロジェクトに、NuG…

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

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

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

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

2015 年振り返り

今年も、しばやんさんが作った 2015 年の人気記事ランキングを生成するサービスを使わせてもらい、1年を振り返ってみます。 blog.shibayan.jp 2015 年の人気記事ランキングです。 Azure SDK 2.5 の Azure Diagnostics に移行する Azure Storage Client Libr…

Azure Web Apps 上の WordPress から記事を移行した話

はてなブログを始めたきっかけは、Azure Web Apps 上の WordPress で構築していたブログに接続できなくなってしまったことでした。Twitter で情報を頂いたおかげで、2年ほど書いていた過去の記事を移行することができたので、その顛末をまとめておきます。 …

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

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

Azure Resource Manager SDK を使って Web アプリをデプロイする

この記事は、Azure Advent Calendar 2015 の 4 日目 の記事です。qiita.comAzure Resource Manager(ARM)REST API を呼び出せる SDK のプレビュー版が公開されているので、試してみました。Azure Web Apps に ASP.NET MVC アプリケーションをデプロイします…

はてなブログに移行しました

Azure Web Apps 上に WordPress を構築してブログを書いていましたが、はてなブログに移行しました。移行といっても、ClearDB が壊れて接続できなくなり、過去の記事はすべて消えてしまったのでゼロからの再スタートですが・・・一応 Azure Web Apps のバッ…

Azure の Storage Client と Diagnostics の旧バージョンサポート終了について

以前の記事で、Azure の Storage Client と Diagnostics の旧バージョンサポート終了に伴う移行方法を書きましたが、サポート終了日の延期が2回ほど告知されているため、改めて整理してみました。 Azure Storage Client 最新の告知では、Ver.1.7 ~ 1.5.1 …

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 サーバー環境変数か…

SlideShare アカウントが一時停止された話

先日、SlideShare アカウントが一時停止されてしまい、ログインできなくなってしまいました。 Oops! Your account was suspended after violating SlideShare's Terms of Service and/or Community Guidelines.Please read the Suspended Users FAQ to resol…

Azure Web Apps に Parameters.xml を使って WebDeploy する

ASP.NET MVC アプリケーションの WebDeploy パッケージを Azure Web Apps にデプロイする際に、Web.config に埋め込まれた Storage などの接続文字列を書き換えるために zip ファイルを展開する作業が非常に手間でした。 調べてみると、デプロイする際に Par…

Go (5) JAZUG / JAZUG5周年総会に参加して LT してきました

jazug.doorkeeper.jp 先週の土曜日、Go (5) JAZUG / JAZUG5周年総会に参加して LT してきました。 speakerdeck.com 今回は、ご当地 JAZUGのセッションがあり、普段東京のイベントにしか参加したことがなかったので、支部の方々とお話しできたのが良かったで…

Azure Cloud Services のデプロイが完了しない原因を特定する方法

久しぶりに Azure Cloud Services のデプロイでハマってしまったので共有しておきます。 Web Role や Worker Role のプロジェクトをデプロイした際、パッケージに問題があり、ビジー → 再開中 が繰り返されてデプロイが完了しないときがあります。ポータル上…

ASP.NET MVC で JSON の一部として PartialView を返す方法

gooner.hateblo.jp 前回の記事では、Ajax 通信でページを部分更新する際の例外処理について記載しましたが、それに関連した内容です。 ASP.NET MVC 5 の Ajax 通信で PartialView を返す際に、JSON の一部として返したいケースがありました。例外処理と似た…

ASP.NET MVC の Ajax 通信で例外を処理する

ASP.NET MVC 5 の Ajax 通信でページを部分更新する際に、どのように例外を処理すべきかを悩んだので、まとめておきます。 現象 Ajax 通信で PartialView を返すアプリをシンプルなコードで実装します。 #HomeController.cs public class HomeController : C…

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

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

アーセナルが FA カップを連覇!!

5月30日に ウェンブリー スタジアム で行われた FA カップ決勝戦、アーセナル vs アストン・ヴィラは 4-0 でアーセナルが勝利し、歴代最多 12 回目の優勝を果たしました。優勝の余韻が消えないうちに、グーナーの思いを綴ってみることにしました。 スタメン…

Azure SDK 2.6 の Azure Diagnostics に移行する

gooner.hateblo.jp 以前の記事でも書きましたが、Cloud Services で Azure Diagnostics を利用している場合、2015年12月9日までに Azure SDK 2.5 以降で利用できる Diagnostics 2.0 にアップグレードする必要があります。重複する部分もありますが、この記事…

Global Azure Boot Camp 2015 in Japan に参加して LT してきました

jazug.doorkeeper.jp 先日、Global Azure Boot Camp 2015 in Japan に参加して、LTしてきました。 speakerdeck.com Azure App Services のネタが中心だったので、最近仕事でも使い始めた Web Apps の話をしました。LT の最後に紹介した孤独のグルメのアプリ…

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…

SendGrid の Event Webhook から POST されたデータを Azure DocumentDB に登録する

SendGrid の Event Webhook を利用すると、メールを送信する際に発生したイベントを指定した URL に POST することができます。POST されるデータは、delivered や bounce などのイベントタイプによってスキーマが異なる JSON 配列なので、スキーマフリーの …

SendGrid の Web API v3 で統計情報を取得する

久しぶりに、SendGrid の Web API のドキュメントを読んだら、Web API v3 が公開されていました。Web API v3 は、Basic 認証を使うようになり、API のリクエストの送信先ホストも変更されています。 gooner.hateblo.jp 以前の投稿で、統計情報を取得する Gen…

Azure Search で地理空間検索アプリを作ってみる

Azure Search の地理空間検索を使用すると、ある地点から特定の距離内にある検索対象を見つけることができます(現在位置から 5 km 以内にあるすべてのレストランを検索するなど)。この機能を使って、孤独のグルメに登場したお店を検索できる ASP.NET MVC …

Azure SDK 2.5 の Azure Diagnostics に移行する

(追記)Azure SDK 2.6 の Azure Diagnostics に移行することをお薦めします。 gooner.hateblo.jp 昨年の 12月10日に Azure アカウント宛にメールが来ていて、Cloud Services(Web Role, Worker Role)で Azure Diagnostics を利用している場合、2015年12月9…