備忘録 -デバック時に2つのプロジェクトが起動しなくなったら-

デバック時にアプリがうまく起動しなくなる。

以下のようにデバック時うまく起動しない場合があります。(アプリのIISが起動していない。)

VS2Project005

Visual studio 2012でApps for Office で新規プロジェクトを作成すると

以下のように2つプロジェクト作成されますが、

VS2Project010

以下のような操作をすると、、デバック時に1つのプロジェクトしか起動しなくなります。

  1. プロジェクトの上で右クリックで、[スタートアッププロジェクトに設定]
  2. ASPXファイルやHTMLファイルの上で右クリックで、[スタートページに設定]
  3. 新規プロジェクト追加

そんなときは設定を修正します。

設定修正方法

[ソリューション][右クリック][プロパティ]

VS2Project020

以下のように[シングルスタートアッププロジェクト]になている

VS2Project030

以下のように[マルチスタートアッププロジェクト]に修正する。

VS2Project040

Office用アプリではデバック時に指定Webページを起動しなくていいので、ページを起動しないように、「ページを開かずに外部アプリケーションからの要求を待つ」に設定する。

VS2Project050

Office用アプリをWindows Azure に配置する方法 6(データベースバックアップ)

Office用アプリをWindows Azure に配置する方法(Apps for Office)

  1. Office用アプリをWindows Azure に配置する方法 1(Azure Web ロール編)
  2. Office用アプリをWindows Azure に配置する方法 2(SSL編)
  3. Office用アプリをWindows Azure に配置する方法 3(Office Web Apps編)
  4. Office用アプリをWindows Azure に配置する方法 4(SQL Azure編)
  5. Office用アプリをWindows Azure に配置する方法 5(IIS, ASP セッション管理)
  6. Office用アプリをWindows Azure に配置する方法 6(データベースバックアップ)

今回の課題

[SQL Azure]のデータベースを [Windows Azure] [ストレージ]へバックアップします。

バックアップ手順

1. バックアップ

[SQL Azure]管理画面から[エクスポート]をクリックします。

Azure_AppsForOffice6_010

任意の[ストレージ]へ保存します。今回は初回なので[新しいストレージアカウントを作成する]を選択します。

Azure_AppsForOffice6_020

 東アジアに設定します。(今回は間違えてアメリカ合衆国西部)

Azure_AppsForOffice6_030

しばらくまつとバックアップが終了します。

2. バックアップの確認

[ストレージ]でさきほど作成したストレージを選択します。

Azure_AppsForOffice6_050

[コンテナー]をクリックします。

Azure_AppsForOffice6_060

作成した[コンテナー]をクリックします。

Azure_AppsForOffice6_070

さくほど作成した[SQL Azure]のバックアップが表示されました。

Azure_AppsForOffice6_080

Office用アプリをWindows Azure に配置する方法 5(IIS, ASP セッション管理)

Office用アプリをWindows Azure に配置する方法(Apps for Office)

  1. Office用アプリをWindows Azure に配置する方法 1(Azure Web ロール編)
  2. Office用アプリをWindows Azure に配置する方法 2(SSL編)
  3. Office用アプリをWindows Azure に配置する方法 3(Office Web Apps編)
  4. Office用アプリをWindows Azure に配置する方法 4(SQL Azure編)
  5. Office用アプリをWindows Azure に配置する方法 5(IIS, ASP セッション管理)
  6. Office用アプリをWindows Azure に配置する方法 6(データベースバックアップ)

今回の課題

IIS, ASP で各Webロール(Windows Server)セッション(Session) を共有するために、SQL Azure のデータベースを使用します。

今回は、SQL Azureでセッション管理ができる。[ASP.NET Universal Providers] ライブラリーを使用してASP.NETプログラムのセッションを管理します。

メリット

  1. セッションの期限切れレコードの削除を行う。(セッション設定・削除時に期限切れレコードを削除しているようです)
  2. 初回にセッション管理テーブルがない場合も自動的に作成します。
  3. ASP.NETプログラムには、ライブラリの設定と、Web.Configの設定のみで対応できます。

ほかにも、セッションを管理する方法があります。

  1. メモリを使った高速な[Azure AppFabricキャッシュ]
  2. ストレージテーブル遅いですが安価な[ストレージサービス]
  3. 従来型のSQL ServerのAPS.NETのセッション状態プロバイダーを使用した方法
    欠点:SQL Azureには定期的にコマンドを実行するSQL Server Agenetがないため期限切れセッションのマニュアル削除対応が必要です。

作成手順

1. Visual Studio 2012 SQL Serverの機能確認、なければ、インストールします。

以下の機能がVisual Studio にあるか確認します。(Professional なら標準機能?)

メニューにはこのようなSQL関連のものがあります。

  1. [表示][SQL Server オブジェクト エクスプローラー]
  2. [SQL][SQL Server の追加]

Azure_AppsForOffice5_010

なければ、以下のツールをいれるといいかもしれません。

SSDT for Visaul Studio 2012(SQL Server Data Tools)

http://msdn.microsoft.com/en-us/data/hh297027

Azure_AppsForOffice5_020

[SQL Azure]データベースを追加しておきます。

[Visual Studio][SQL][SQL Server の追加]

Azure_AppsForOffice5_030

追加できると、以下のように[SQL Azure]のデータが参照できます。

Azure_AppsForOffice5_040

2. ASP.NETにセッション管理のプログラムライブラリーを追加

[Microsoft ASP.NET Universal Providers Core Libraries 日本語 リソース 1.2]をダウンロードします。

https://nuget.org/packages/Microsoft.AspNet.Providers.Core.ja/

Azure_AppsForOffice5_050

[Visual Studio][ライブラリーパッケージマネジャー][パッケージマネジャーコンソール]をクリックします。

Azure_AppsForOffice5_060

以下のコマンドを入力して[Enter]を押します。

PM> Install-Package Microsoft.AspNet.Providers.Core.ja

正常に終了すると以下のように”正常に追加されました”と表示されます。

Azure_AppsForOffice5_070

ASP.NETのプロジェクトの参照設定を確認すると、[System.Web.Providers]が確認できます。

Azure_AppsForOffice5_080

もしか存在していない場合はほかのプロジェクトの参照設定に設定されている可能性がありますので、確認します。

[Visual Studio][ツール][ライブラリーパッケージマネジャー][ソリューションのNuGetパッケージの管理]をクリックします。

Azure_AppsForOffice5_090

[NuGet]で[Universal Providers Core Libraries]を選択して[管理]ボタンをクリックします。

Azure_AppsForOffice5_100

もしか間違えていたら修正してください。

Azure_AppsForOffice5_110

3. ASP.NETの Web.Configを修正して、セッション管理の設定をします。

[Visual Studio]で[Web.config]を修正します。

Azure_AppsForOffice6_090

参考にWeb.configファイルを添付しました。

Web.config


<?xml version="1.0" encoding="utf-8"?>
<!--
 ASP.NET アプリケーションの構成方法の詳細については、
 http://go.microsoft.com/fwlink/?LinkId=169433 を参照してください
 -->
<configuration>
 <configSections>
 <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
 </configSections>

 <!-- SQL Serverの設定 Express Start-->
 <!--
 <connectionStrings>
 <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=XXXXXXX;Integrated Security=True;MultipleActiveResultSets=True"
 providerName="System.Data.SqlClient" />
 </connectionStrings>
 -->
 <!-- SQL Serverの設定 Express End-->
 <!-- SQL Serverの設定 SQL Azure Start-->
 <connectionStrings>
 <add name="DefaultConnection" connectionString="Server=tcp:r2qyxh7cq1.database.windows.net,1433;Database=sql-test001;User ID=test@r2qyxh7cq1;Password=ここは自分で設定して;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
 providerName="System.Data.SqlClient" />
 </connectionStrings>
 <!-- SQL Serverの設定 SQL Azure End-->

 <system.web>
 <!-- 状態管理プロバイダの設定 Start-->
 <sessionState mode="Custom" customProvider="DefaultSessionProvider">
 <providers>
 <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
 </providers>
 </sessionState>
 <!-- 状態管理プロバイダの設定 Start-->

 <compilation debug="true" targetFramework="4.5" />
 <httpRuntime targetFramework="4.5" />
 </system.web>
 <entityFramework>
 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
 <parameters>
 <parameter value="v11.0" />
 </parameters>
 </defaultConnectionFactory>
 </entityFramework>
 <runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 <dependentAssembly>
 <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
 <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
 </dependentAssembly>
 </assemblyBinding>
 </runtime>
</configuration>

4. ローカルでテストをします。

Visual Studioでデバック実行(F5)をおして起動します。

ASP.NETプログラムでセッションに情報を書き出します。

Azure_AppsForOffice5_120

[SQL Azure]を確認すると [dbo.Session] テーブルが自動で作成されます。 セッションレコードも追加されています。

Azure_AppsForOffice5_130

参考

  1. 業務システムでWindows Azureを使うための42の覚え書き
    http://www.atmarkit.co.jp/fdotnet/chushin/azurecasestudy_01/azurecasestudy_01_03.html
  2. Windows Azure AppFabric Cachingでスケールアウトを実現しよう
    http://codezine.jp/article/detail/6007
  3. [Windows Azure Platform編]セッションの一貫性を確保する
    http://itpro.nikkeibp.co.jp/article/COLUMN/20110713/362356/
  4. SQL Azureを実際に活用する
    http://www.atmarkit.co.jp/fdotnet/dnfuture/winazureplatform_03/winazureplatform_03_02.html
  5. TechEDNAセッション:SQL Azureパフォーマンスの考察とトラブルシューティングまとめ
    http://sqlazure.jp/b/sqlazure/664/
  6. ASP.NET Universal Providersによるセッション管理
    http://news.infoseek.co.jp/article/codezine_6405
  7. HighPerformanceSessionStateProvider
    http://takepara.blogspot.jp/2011/08/highperformancesessionstateprovider.html
  8. ASP.NET Universal Providersによるセッション管理
    http://codezine.jp/article/detail/6405?p=2
  9. Windows Azureのパフォーマンスカウンターやログ、トレース
    http://blogs.gine.jp/taka/archives/2158

Office用アプリをWindows Azure に配置する方法 4(SQL Azure編)

Office用アプリをWindows Azure に配置する方法(Apps for Office)

  1. Office用アプリをWindows Azure に配置する方法 1(Azure Web ロール編)
  2. Office用アプリをWindows Azure に配置する方法 2(SSL編)
  3. Office用アプリをWindows Azure に配置する方法 3(Office Web Apps編)
  4. Office用アプリをWindows Azure に配置する方法 4(SQL Azure編)
  5. Office用アプリをWindows Azure に配置する方法 5(IIS, ASP セッション管理)
  6. Office用アプリをWindows Azure に配置する方法 6(データベースバックアップ)

今回の課題

SQL Azure にデータベースを作成して [Office用アプリ]からアクセスします。

サンプルプログラム

サンプルプログラムは以下です。(保障等はしませんので、参考程度にしてください。)

OfficeAppAzure

作成手順

1. SQL Azure データベース作成と環境設定

以下のURLからWindows Azureの管理画面にログインします。

[SQLデータベース]を選択して[SQLデータベースを作成します。]

https://manage.windowsazure.com

Azure_AppsForOffice4_010

照合順序はよく使う [Japanese_CI_AS]を今回は使用しました。

Azure_AppsForOffice4_020

[地域]はWebロールと同じ場所の[東アジア]にしました。

Azure_AppsForOffice4_030

しばらく待つと正常にデータベースが作成されます。

Azure_AppsForOffice4_040

[この IP アドレス用に Windows Azure ファイアウォール ルールを設定する]

にすると自分のPCのアドレスが許可されます。

Azure_AppsForOffice4_050

[ダッシュボード]の[使用できるIPアドレスの管理]で確認できます。

Azure_AppsForOffice4_060

[現在のクライアントIPアドレス]で自分のPCのIPアドレスが入っているのが確認できます。これでSQL Azureへ自分のPCからアクセス可能となります。

[Windows Azureサービス]が[はい]ですと[Windows Azure][Webロール]等からアクセスできるようになります。

Azure_AppsForOffice4_070

2. SQL Azure データベースにテーブルとデータを追加する。

[Microsoft SQL Server Data Tools]というローカルPCから操作できる高機能なツールは今回は使用せずに、

簡単にWeb画面から操作できる方法でテーブルとデータを追加してみます。

[SQLデータベースの設計]をクリックします。

Azure_AppsForOffice4_080

[新しいテーブル]をクリックします。

Azure_AppsForOffice4_090

テーブルを編集して[保存]をクリックします。

Azure_AppsForOffice4_100

[クイックスタート]から[SQL データベースに対して Transact-SQL クエリを実行する]をクリックします。

Azure_AppsForOffice4_110

SQL Insert文を入力して[実行]をクリックします。

成功するとデータが登録されます。

Azure_AppsForOffice4_120

再度[SQLデータベースの設計]で[データ]を確認します。

Azure_AppsForOffice4_130

プログラムから接続するために、接続文字列を取得しておきます。

[クイックスタート]から[ADO.Net、ODBC、PHP、および JDBC の SQL データベース接続文字列を表示する]をクリックします。

Azure_AppsForOffice4_140

[ADO.NET]の[接続文字列]をコピーしておきます。

Azure_AppsForOffice4_150

3. Visual Studioで[Office用アプリ]に、サーバサイドでSQL処理をするコードを追加する。

[Office用アプリ]のサンプルプログラムは”html”ですので、[DBTest.aspx]を新規で作成して、サーバサイドでSQLを取得するプログラムを実装します。

Azure_AppsForOffice4_160

Manifestファイルを [aspx]にします。

Azure_AppsForOffice4_170

4. [Office用アプリ]のテストをローカルExcelで行います。

デバック実行(F5)します。ボタンをクリックすると[SQL Azure]からデータを正常に取得します。

Azure_AppsForOffice4_180

Windows Azure Webロールにアップロードしてテストするのは方法は前回までの記事と同じなので省略しておきます。

参考

  1. 10 行でズバリ!! [C#] クラウド上のリレーショナル データベース (SQL Azure) を利用する
    http://code.msdn.microsoft.com/windowsazure/WindowsAzure-10line-e671bc01

Office用アプリをWindows Azure に配置する方法 3(Office Web Apps編)

Office用アプリをWindows Azure に配置する方法(Apps for Office)

  1. Office用アプリをWindows Azure に配置する方法 1(Azure Web ロール編)
  2. Office用アプリをWindows Azure に配置する方法 2(SSL編)
  3. Office用アプリをWindows Azure に配置する方法 3(Office Web Apps編)
  4. Office用アプリをWindows Azure に配置する方法 4(SQL Azure編)
  5. Office用アプリをWindows Azure に配置する方法 5(IIS, ASP セッション管理)
  6. Office用アプリをWindows Azure に配置する方法 6(データベースバックアップ)

[Office Web Apps]での[Office用アプリ]の概念図

※自分が調査した内容ですので間違えているかもしれません

Azure_AppsForOffice3_005

[Office Web Apps]でテスト

Office用アプリもSSL対応になったし、ローカルExcelでサンプルプログラム動作するし、Office Web Appsで試してみました。

※[Office Web Apps]は[SkyDrive]もしくは[Office365]から を起動しました。

しかし以下のエラーでうまく動かない。

(日本語でエラーを表示)

“アプリ警告 このアプリは Excel Web App では使えません。このアプリを使うには、このドキュメントを Excel で開いてください。”

Azure_AppsForOffice3_010

(英語でエラーを表示)

“App Warning This app is not available in the Excel Web App. Open this document in Excel to use the app”

Azure_AppsForOffice3_020

[Office Web Apps]について調査

いろいろ調査してみると[ローカルOffice]と[Office Web Apps]とでは、Manifest ファイルの参照について異なるようです。

  1. [ローカルOffice]は、ManifestファイルがオフラインでもOKです。
    もしくは[Office用アプリ]の起動時に参照していないのかは不明ですが、
  2. [Office Web App]の場合はSharePoint のアプリカタログ(App Catalog)が参照できないとうまく動きません。

具体的には[Office Web App]の場合は以下のいずれかにManifestファイルを配置する必要があります。

  1. [Office Store][Office用アプリ]を配置する。(内部的にはSharePointのアプリカタログが動作しているみたい)
  2. [Office365 SharePoint]のApp Catalogに[Office用アプリ]を配置する。
  3. [Onpremise SharePoint]のApp Catalogに[Office用アプリ]を配置する。

Office365のアプリカタログにアプリを配置して[Office Web App]で[Office用アプリ]動作確認します。

Visual Studioで作成したManifest ファイルをOffice365のアプリカタログへアップロードします。

Azure_AppsForOffice3_030

Azure_AppsForOffice3_040

Office365にログインします。

アプリカタログのサイトを開きます。

[Office用アプリ]をクリックします。

[新しいアプリ]をクリックしてManifestファイルを追加します。

※アプリカタログは事前に作成しています。

Azure_AppsForOffice3_050

以下の様に[Office用アプリ]が追加されます。

Azure_AppsForOffice3_060

ローカルExcelを開きます。

[ファイル][アカウント]

[アカウントの切り替え]

Azure_AppsForOffice3_070

Office365のアプリカタログを追加します。

[ファイル][オプション]

[セキュリティセンター]

[セキュリティセンターの設定]をクリックする。

Azure_AppsForOffice3_080

[信頼できるアプリカタログ]

[カタログURL]にOffice365のアプリカタログを追加します。

必ず[メニューに表示する]をチェックマークをつけます。

Excelを再起動します。

例) https://exceedone8.sharepoint.com/sites/apps

Azure_AppsForOffice3_090

新しいBookにOffice用アプリを追加します。

[挿入][Office用アプリ]をクリックします。

[自分の所属組織]をクリックします。

[最新の情報]をクリックします。(念のため)

Azure_AppsForOffice3_100

[Office用アプリ]を選んで[挿入]をクリックします。

Azure_AppsForOffice3_110

挿入されると以下のようにローカルExcelで動作します。

Bookを名前を付けて保存します。

このBookをOffice365の[ドキュメント]にアップロードします。

Azure_AppsForOffice3_120

[Office365]の[ドキュメント]にさきほどのローカルで作成したBookをアップロードします。

アップロードが完了後、ドキュメントをクリックしてOffice Web Apps(Excel Web App)でOffice用アプリを確認します。

Azure_AppsForOffice3_130

以下のように、Office365のOffice Web Apps(Excel Web App)でOffice用アプリが動作しました。

Azure_AppsForOffice3_140

参考

  1. Running app in Excel Web App (Office Web AppsではApp Catalogがいるよと書いてある)
    http://social.msdn.microsoft.com/Forums/en-US/appsforoffice/thread/418a3d3f-e2b6-408c-92eb-701294306008
    http://social.msdn.microsoft.com/Forums/en-US/appsforoffice/thread/211aa976-f263-404b-88ac-38a015850577

Office用アプリをWindows Azure に配置する方法 2(SSL編)

Office用アプリをWindows Azure に配置する方法(Apps for Office)

  1. Office用アプリをWindows Azure に配置する方法 1(Azure Web ロール編)
  2. Office用アプリをWindows Azure に配置する方法 2(SSL編)
  3. Office用アプリをWindows Azure に配置する方法 3(Office Web Apps編)
  4. Office用アプリをWindows Azure に配置する方法 4(SQL Azure編)
  5. Office用アプリをWindows Azure に配置する方法 5(IIS, ASP セッション管理)
  6. Office用アプリをWindows Azure に配置する方法 6(データベースバックアップ)

今回の課題

AzureにSSLを導入します。

AzureにSSLを導入することにより、Office Web Apps (SkyDriveやOffice365) でOffice用アプリ(Apps for Office)を動作することが可能になります。
※Office Web Apps がSSLのためオフィス用アプリにもSSLが必要です。

1. SSLに必須な独自ドメインを取得して、DNSレコードに、CNAMEを追加します。

AzureのWebロールはデフォルトURLですとマイクロソフトの [cloudapp.net]のサブドメインが割り当てられますので、マイクロソフトのドメインですとSSLが取得できませんので、独自ドメインのCNAMEを使用して独自ドメインから参照できるように DNSレコードにCNAMEを追加します。

今回は,お名前.com を使用します。

設定内容 (お名前.comではValueの末尾に”.”をつけてもつけなくてもOK)

ホスト名 TYPE VALUE / MX優先
azuretest001.appsforoffice.net CNAME azureexceedonetest.cloudapp.net

Azure_AppsForOffice2_010

コマンドプロンプトでNSLOOKUPでCNAME確認する。

例) azuretest001.appsforoffice.net

Azure_AppsForOffice2_020

URLからもアクセスしてみる。

Windows AzureのURL

http://azureexceedonetest.cloudapp.net/App/Home/Home.html

Azure_AppsForOffice2_030

Windows AzureのURLの別名にアクセスして、CNAMEが有効なことが確認できます。

http://azuretest001.appsforoffice.net/App/Home/Home.html

Azure_AppsForOffice2_040

2. SSL証明書を購入して設定します。

ワンコインSSL 1日100円というを1週間購入してみます。

IISを使用して証明書の要求を作成します。

II7/IIS8どちらでもOKです。今回はIIS8です。

IISを起動してサーバを選択して[サーバー証明書]をクリックして、[機能を開く]をクリックします。

Azure_AppsForOffice2_050

[証明書の要求の作成]をクリックする。

Azure_AppsForOffice2_060

[証明書の要求]ダイアログに入力する。

[次へ]をクリックします。

Azure_AppsForOffice2_070

タイトル
【一般名】 SSL接続の際のURL:FQDN azuretest001.appsforoffice.net
【組織】 Exceedone Co., Ltd.
【組織単位】 Web Service
【市区町村】 Chiyoda-ku
【都道府県】 Tokyo
【国/地域 】 JP

[暗号化サービスプロバイダーのプロパティ]を設定します。ワンコインSSLのビット長は2048です。
また、Windows Azureが最低でも、ビット長2048が必要です。

[ビット長]を[2048]を選択後

[次へ]をクリックします。

Azure_AppsForOffice2_080

任意のファイル名を指定します。
[終了]をクリックします。

例:C:\csrAzuretest001.txt

Azure_AppsForOffice2_090

作成された証明書の要求の内容は以下になります。

Azure_AppsForOffice2_100

ワンコインSSLを購入して、SSL証明書を取得します。

以下のサイトに新規ユーザでログインします。

https://oc.veritrans.co.jp/occert/

Azure_AppsForOffice2_110

アカウントを作成したら、[証明書の新規購入]をクリックします。

Azure_AppsForOffice2_120

テストですので、7日と指定して

[次へ]をクリックします。

Azure_AppsForOffice2_130

IISで作成した[証明書の要求]のテキストを貼り付けます。

[次へ]をクリックします。

Azure_AppsForOffice2_140

[CSR情報の確認]画面が表示されます。

[次へ]をクリックします。

Azure_AppsForOffice2_150

ドメイン所有者に対して承認依頼メールが送付されます。

メールで承認します。

Azure_AppsForOffice2_160

メールで承認依頼を表示する以下のような画面が表示されます。ので、承認ボタンをクリックします。

Azure_AppsForOffice2_170

承認後以下のようにメールで[証明書][クロスルート設定用の証明書][中間CA証明書]が送付されます。

Azure_AppsForOffice2_180

3. 購入したワンコインSSL証明書をIISに使用して、PFXファイル(証明書と秘密キー)を作成します。

※PFX (Personal inFormation eXchange)

[証明書の要求の作成]をクリックする。

Azure_AppsForOffice2_190

証明書ファイルを事前に作成して[ファイル名]を入力します。

[フレンドリ名]は任意のものをいれます。

※証明書ファイルの作成方法
証明書の(—–BEGIN CERTIFICATE—–) から (—–END CERTIFICATE—–)をコピーしてファイルを作成します。

Azure_AppsForOffice2_200

任意のIISのサイトでSSLと証明書をバインドします。

Azure_AppsForOffice2_210

httpsとポート443と SSL証明書をバインドして[OK]をクリックします。

Azure_AppsForOffice2_220

[クロスルート設定用の証明書][中間CA証明書]をインストールします。証明書と名前で紐づき後で、証明書をエクスポートしたときにいっしょにPFX(公開鍵)になります。

※[クロスルート設定用の証明書][中間CA証明書]ファイルの作成方法
証明書の(—–BEGIN CERTIFICATE—–) から (—–END CERTIFICATE—–)をコピーしてファイルを作成します。

ファイル作成後クリックして[証明書のインストール]をクリックします。

Azure_AppsForOffice2_230

[ローカルコンピュータ]をクリックして

[次へ]をクリックします。

Azure_AppsForOffice2_240

[ローカルコンピュータ]をクリックして

[参照]をクリックします。

Azure_AppsForOffice2_250

[物理ストアを表示する]をチェックして

[中間証明機関]をクリックします。(たぶん場所はどこでもよい)

[OK]をクリックします。

そうするとローカルコンピュータに[クロスルート設定用の証明書][中間CA証明書]がインストールされ、[証明書]と名前で紐づきます。

Azure_AppsForOffice2_260

念のために秘密鍵と証明書をバックアップしておく。

Azure_AppsForOffice2_270

パスワードを入力して[OK]をクリックする。

Azure_AppsForOffice2_280

作成したPFXファイル(証明書と秘密キー)をエクスポートします。

[mmc.exe]を起動します。

[証明書]を選択して[追加]をクリックします。

Azure_AppsForOffice2_290

[コンピュータアカウント]をクリックして

[次へ]をクリックします。

Azure_AppsForOffice2_300

[ローカルコンピュータ]をクリックして

[完了]をクリックします。

Azure_AppsForOffice2_310

[証明書]を選択してエクスポートします。

Azure_AppsForOffice2_320

[次へ]をクリックします。

Azure_AppsForOffice2_330

はい、秘密キーをエクスポートします。

[次へ]をクリックします。

Azure_AppsForOffice2_340

Personal Infomation Exchnage – PKCS

すべての拡張プロパティをエクスポートします。

[次へ]をクリックします。

Azure_AppsForOffice2_350

ファイル名を入力して

[次へ]をクリックします。

Azure_AppsForOffice2_360

4. Visual Studio で SSLのエンドポイントを作成し証明書を割り付けます。

Visual Stuido から、Webロールのプロパティで[証明書]タブを選択します。

[証明書の追加]ボタンをクリックします。

新しい行ができるのでサムプリントの[…]をクリックします。

Azure_AppsForOffice2_370

証明書を選択して

[OK]をクリックします。

Azure_AppsForOffice2_380

エンドポイントを選択して[エンドポイントの追加]をクリックします。

[パブリックポート]は[443]にして[SSL証明書の名前]で証明書を選択します。

Azure_AppsForOffice2_390

[クラウドサービス]を[パッケージ]する。

Azure_AppsForOffice2_400

5. エクスポートしたPFXファイル(証明書と秘密キー)を[Windows Azure][Webロール]にアップロードします。

https://manage.windowsazure.com/

[Windows Azure][クラウドサービス]を選択して、[証明書]タブをクリックすると以下の画面が表示されます。

[アップロード]をクリックします。アップロードが完了すると3行表示されます。

※3行の内容=[証明書][クロスルート設定用の証明書][中間CA証明書]

Azure_AppsForOffice2_410

6. Visual Studioでパッケージした[クラウドサービス]をアップロードします。

[Windows Azure][クラウドサービス]を選択して、[クイックスタート]タブをクリックすると以下の画面が表示されます。

[運用環境のデプロイを更新する]をクリックします。

Azure_AppsForOffice2_420

デプロイの更新画面でVisual Studioのパッケージをアップロードします。

Azure_AppsForOffice2_430

7. SSLの接続テスト

以下ののようにSSLに接続できるようになりました。

https://azuretest001.appsforoffice.net/App/Home/Home.html

Azure_AppsForOffice2_440

Office用アプリ(Apps for Office)での接続テスト

ManifestファイルのURLを以下のように変更します。
https://azuretest001.appsforoffice.net/App/Home/Home.html

Azure_AppsForOffice2_450

ローカルExcelでは以下のように正常に動作しました。

Azure_AppsForOffice2_460

参考サイト

  1. Microsoft IIS 7.0ジオトラスト クイックSSL プレミアム インストール手順 (新規)
    https://www.geotrust.co.jp/support/ssl/install/iis7_new.html
  2. Windows Azureと相思相愛なベリサイン社ワンコインSSL
    http://sqlazure.jp/b/windows-azure/745/
  3. 【Azure for ITPRO】サービス証明書の準備
    http://blogs.technet.com/b/junichia/archive/2010/09/03/3353536.aspx
  4. ジオトラスト クイックSSL プレミアムを取得し、WindowsAzure でSSL環境を構築する手順を教えてください。
    https://www.geotrust.co.jp/support/ssl/faq/900102/index.html
  5. Windows AzureでSSL接続を行うためには
    http://d.hatena.ne.jp/Horiuchi_H/20120202/1328169555

Office用アプリをWindows Azure に配置する方法 1(Azure Web ロール編)

Office用アプリをWindows Azure に配置する方法(Apps for Office)

  1. Office用アプリをWindows Azure に配置する方法 1(Azure Web ロール編)
  2. Office用アプリをWindows Azure に配置する方法 2(SSL編)
  3. Office用アプリをWindows Azure に配置する方法 3(Office Web Apps編)
  4. Office用アプリをWindows Azure に配置する方法 4(SQL Azure編)
  5. Office用アプリをWindows Azure に配置する方法 5(IIS, ASP セッション管理)
  6. Office用アプリをWindows Azure に配置する方法 6(データベースバックアップ)

今回の課題

 Office用アプリ(Apps for Office)をWindows Azure に配置する方法を実践してみます。

Office用アプリはWebサーバは、WebサーバならApacheであろうと、IISだろうとなんでもOKです。

今回はCloud(クラウド)のWindows Azureに配置してみます。

※もちろんAWSでも、クラウドでない、WebホスティングサービスでもなんでもOKです。

Azure_AppsForOffice_010

次回以降の課題

  1. Azure WebロールのIISのセッション管理の実装をします。(ログインとかサーバ再度でのセッション管理)
    1. ASP.NET Universal Providersによるセッション管理
      http://codezine.jp/article/detail/6405
  2. Azure WebロールとSQL Azureとの連携プログラムを作成します。
  3. Azure WebロールにSSLを実装します。(SkyDrive, Office 365 Excel Web Appsで動作させるために必要)
    1. 「Officeアプリ」の作り方と、できること/できないこと (3/4)
      下の方に, Excel Web App(Office Web Apps)のSkyDrive, Office365は、SSLなので、オフィス用アプリもSSLにしないと動かないとかいてある。
      http://www.atmarkit.co.jp/ait/articles/1303/04/news091_3.html
    2. GeoTrustさんが、AzureのSSL証明書の設定方法についてマニュアル化をしている。
      ジオトラスト クイックSSL プレミアムを取得し、WindowsAzure でSSL環境を構築する手順を教えてください。
      https://www.geotrust.co.jp/support/ssl/faq/900102/
      ワンコインSSL
      (100/1日)
      https://www.verisign.co.jp/press/2011/pr_20110519.html
  4. Azure WebロールでのSSLには独自ドメインが必要なので、適用します。
    Webロールに独自ドメイン名にするには、DNSにCNAMEふるだけでOKのようです。
    http://www.windows-maniax.com/kuniteru/azure591.html

サンプルプログラム

サンプルプログラムは以下です。(保障等はしませんので、参考程度にしてください。)

OfficeAppAzure

1. 事前準備

1-1. 開発環境を作成しておきます。

私の環境は こんな感じです。

Windeos 2012 + Office2013 + Visual Studio 2012 + Microsoft Office Developer Tool for Visaul Studio 2012

詳細は以下を参照して下さい。

  1. 環境セットアップ(Windows Server 2012 + SharePoint 2013 Preview + VisulaStudio 2012)
  2. SharePoint 2013/Office365([Visaul Studio Projcet] [App for SharePoint])/Office2013(App for Office) のVisaul Studio 2012 開発環境

1-2. Windows Azureを契約します。(無償3か月があります)

2. Visual Studio 2012でサンプルを作成します。

2-1. Office用アプリのプロジェクトを作成します。

  1. Visual Studioにて[ファイル][新規作成][プロジェクト]を選択します。
    [Office2013用アプリ]を選択して[OK]をクリックします。
    Azure_AppsForOffice_020
  2. Office用アプリのプロジェクトができます。
    Azure_AppsForOffice_030

2-2. Cloud Serviceを追加します。

豆知識

Windows AzureのWebサービスには大きく分けて2種類あります。

  1. お手軽な「Windows Azure Webサイト(共有インスタンス)」
  2. 高機能な「Webロール(専用インスタンス)(クラウド・サービス)」
    ※自分専用のVM(windows2008)が作成されます。
    参考(比較表): Webサイトとクラウド・サービス
    http://www.atmarkit.co.jp/fdotnet/special/introazwebsite_01/introazwebsite_01_01.html

今回は、Webロール(クラウドサービス)でいきます。

Webロールのメリットとしては以下のような感じです。

  1. ロードバランサー機能
    http://msdn.microsoft.com/ja-jp/magazine/jj618299.aspx
  2. インスタンス(VM)を自由に増減できる。
    http://msdn.microsoft.com/ja-jp/library/ee405486.aspx
  3. WebRole.cs などからログ機能、WorkerRoleとの連携等のAzureのフル機能を使用できる。
    http://d.hatena.ne.jp/waritohutsu/20100603/1275586879

手順

  1. Office用アプリのソリューションで右クリックして[追加][新しいプロジェクト]を選択します。
    [Windows Azure クラウドサービス]を選択して[OK]をクリックします。
    Azure_AppsForOffice_041
  2. 以下の画面があるがなにも選択しないで、[OK]をクリックします。
    ※後で、Office用アプリをロールに追加します。
    Azure_AppsForOffice_050
  3. 以下のようにプロジェクトが3つになります。
    Azure_AppsForOffice_060
  4. ロールで右クリックして[追加][ソリューション内のWebロールプロジェクト]を選択する。
    以下の画面がでてくるので、Office用アプリのプロジェクトを選択して、[OK]を押します。
    Azure_AppsForOffice_070
  5. 以下のようにCloud サービスにロールが追加されます。
    Azure_AppsForOffice_080

2-3. ローカルデバックします。

  1. スタートアッププロジェクトをOffice用アプリにします。
    オレンジ色のOffice用アプリのプロジェクトを右クリックして[スタートアッププロジェクトに設定]をクリックします。
  2. ロカールデバック(F5)すると以下のように仮想的にローカルでWindows Azureが動作します。
    Azure_AppsForOffice_090
  3. タスクバーの時計の横のほうにWindowsマークが表示されます。
    右クリックして、[Show Storage Emulator]をクリックすると、
    Windows Azureの仮想環境がたちあがります。
    AzureのストレージサービスのBlob, Queue, Table等もローカルに仮想的に存在しております。
    ※うまくいかない場合はVisual Studio が管理者権限で起動していない場合はうまく Azure Emulator が起動しません。
    また [Cloudサービスプロジェクト追加後]、[ASP.NETプロジェクト]、[ Cloudeサービス]プロジェクトを[スタートアッププロジェクト]にして [IIS],[ Azure Emulator]を立ち上げないといけなくなるようです。
  4. Azure_AppsForOffice_100
  5. 正常に動作すると、Excelが起動してOffice用アプリが動作します。
    Azure_AppsForOffice_110

2-4. Azureに配置します(アップロード, Upload)。

  1. ロールの設定でインスタンス数を2個にします。
    ロールに追加したプロジェクトを右クリックして[プロパティ]をクリックする。
    Azure_AppsForOffice_120
  2. インスタンス数を2個に変更
    診断を有効にするを”Off”にする。
    Azure_AppsForOffice_130
  3. Cloud Service プロジェクトを右クリックして[パッケージング]をクリックします。
    Azure_AppsForOffice_140
  4. 以下の画面でパッケージをクリックします。
    Azure_AppsForOffice_150
  5. 正常にパッケージが作成されると、パッケージのあるフォルダーが開きます。
    Azure_AppsForOffice_160
  6. Azureにログインします。
    https://manage.windowsazure.com/
  7. クラウドサービスを選択する。
    左下の[新規]をクリックします。
    ※2回目以降はパッケージのみアップロードできます。
    Azure_AppsForOffice_170
  8. URLと地域を選択して[クラウドサービスを作成する]をクリックする。
    Azure_AppsForOffice_180
  9. 作成されると以下の画面が表示されるので、[新規運用環境のデプロイ]をクリックする。
    Azure_AppsForOffice_190
  10. [デプロイ名]を適当に入力して、
    パッケージは[WindowsAzureOfficeApp.cspkg]※サイズが大きい方
    構成ファイルは[ServiceConfiguration.Cloud.cscfg]※サイズが小さい方
    [1つ以上のロールに単一のインスタンスが含まれていてもデプロイします。]もしかRoleの設定でインスタンスを1つしか作らないようにした場合はチェックが必要です。
    右したのレ点を押すと、Webロールで指定したインスタンス(VM)2個の作成が開始されます。
    Azure_AppsForOffice_200
  11. [インスタンス]タブでVMの状況が確認できます。2個のインスタンス(VM)が作成されるのに5分程度かかります。
    Azure_AppsForOffice_210
  12. 完了後、[ダッシュボード]を確認してサイトURLをメモっておきます。
    2コア動いているのもわかります。(2個のインスタンス)
    例)http://azureexceedonetest.cloudapp.net/
    Azure_AppsForOffice_220
  13. 参考
    1. Windows Azureクラウドサービス再入門~Webロールを作ってみる
      http://tatsuakisakai.net/archives/286
    2. Visual Studio から直接 Windows Azure に配置す
      http://code.msdn.microsoft.com/windowsazure/WindowsAzure-howto-855286fc

2-5. Office用アプリのManifestファイルのURLを編集してAzure Webロールを見るよう修正します。

  1. Manifest ファイルを修正してOffice用アプリのURLを [ローカル ASP.NET ]から[Azure Web Role(ASP.NET)]に修正します。
    例)
    変更前
    <SourceLocation DefaultValue=”~remoteAppUrl/App/Home/Home.html” />
    変更後
    <SourceLocation DefaultValue=”http://azureexceedonetest.cloudapp.net/App/Home/Home.html” />

  2. デバック実行[F5]でオフィス用アプリを動かします。
    [Windows Azure] [Webロール]の[Office用アプリ]で動作できるようになりました。
    Azure_AppsForOffice_230

2-6. さらに、Visual Studioを使用しないで実行してみます。

  1. Excelで新規デバック実行で開いたExcelを名前をつけて、[オフィス用アプリ]付き(Manifest情報埋め込み)Bookを保存します。
    Azure_AppsForOffice_240
  2. そのBookを直接Excelで開いてらOffice用アプリが動作します。
    Azure_AppsForOffice_230

以上で終了です。

参考

  1. Windows Azure サンプル コード集 10 行コードで作る .NET アプリケーション 10 行でズバリ! – Code Recipe – MSDN
    http://msdn.microsoft.com/ja-jp/windowsazure/ff708720.aspx
  2. Apps For officeのMSDNサンプルコード
    http://msdn.microsoft.com/ja-jp/library/jj220075.aspx
    http://msdn.microsoft.com/ja-JP/library/office/apps/fp142185
    http://msdn.microsoft.com/ja-jp/library/office/apps/fp161120.aspx
  3. 10 行でズバリ!! Windows Azure の Web ロール (ASP.NET) を開発する (C#)
    http://code.msdn.microsoft.com/10-Windows-Azure-Web-C-ccbd7d58/
  4. 「Officeアプリ」の作り方と、できること/できないこと (多言語対応、多デバイス対応、SSLの問題:SkyDrive,Office365 )
    http://www.atmarkit.co.jp/ait/articles/1303/04/news091.html

備忘録 -Javascriptのデバッグ-

Visual Studio ネタになりますが、忘れないうちに備忘録として書き留めておきます。

Visual Studio で JavaScript のデバッグを行う際、設定が必要となる。
単純な設定だけど、知らないとデバッグ時に非常に困るw

1. InternetExplorer(IE)を起動する。

2. IEのインターネットオプションを開く。

3. 詳細設定タブ → 「ブラウズ」 → 「スクリプトのデバッグを使用しない(Internet Explorer)」のチェックを外す。
 念のため、「スクリプトのデバッグを使用しない(その他)」のチェックも外した。
 vs2012_ie_java_debug

4. 設定を保存して、IE再起動。
 今までブレークポイントを付けてもスルーしていましたが、無事停まりましたw
 これで VS からデバッグできます。
 vs2012_ie_java_debug_002

次からは、新しい環境を作ったら忘れずに設定しておこう。