ROMANCE DAWN for the new world

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

プロキシ環境下で 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 してきました。 docs.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してきました。 docs.com Azure App Services のネタが中心だったので、最近仕事でも使い始めた Web Apps の話をしました。LT の最後に紹介した孤独のグルメのアプリは、Azur…

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…

Windows Phone 8.1 アプリにプライバシーポリシーのリンクを実装する

新年早々、公開している Save to Instapaper が 10.5.1 のポリシーに違反しているとのメールが来ました。理由が分からず Twitter でつぶやいてみると、biacさんから情報を頂きました。 .@TonyTonyKun う~ん、へんですねぇ。 Save to Instapaperはユーザー情…

2014年振り返り

しばやんさんが作った 2014 年の人気記事ランキングを生成するサービスを使わせてもらい、今年を振り返ってみます。 2014 年の人気記事ランキングです。 ASP.NET Web API で multipart / form-data を使ってファイルをアップロードする Azure Virtual Machin…

Azure Media Indexer で動画の字幕検索アプリを作ってみる

この記事は、Azure Advent Calendar 2014 と ASP.NET Advent Calendar 2014 の両方の 13 日目 の記事です。 qiita.com qiita.com Azure Media Indexer と Azure Search を使って、動画に字幕を表示し、検索した字幕データの時間から再生できる ASP.NET MVC …

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 サイトにデプロイして動かした際…