AdvanceSoftware Tech Blog

アドバンスソフトウェア株式会社の技術ブログ

VB-Report11をWebアプリに組み込みWindows Server 2022にデプロイする

弊社製品のVB-Report 11.0 for .NETを組み込んだWebアプリ(ASP.NET Core Web MVC)をWindows Server 2022/.NET 6の環境にデプロイするまでの流れを解説します。

この記事通りに進めていけばWebアプリの動作が確認できます。

環境

実行環境

開発環境

Webアプリを作る

VB-Report 11.0 for .NETの機能でプレビューを行うWebアプリを作ります。

VB-Report体験版のインストール

今回はVB-Report製品版や体験版に収録のブラウザ上で帳票のプレビューなどを行う「Web用ビューア」の機能を使用します。
VB-Report体験版のインストールは以下の弊社ホームページのリンクから行ってください。

https://www.adv.co.jp/download/download-confrm.php?skey=74N&ftype=D

新規プロジェクト(ASP.NET Core Web MVC)の作成

Visual Studio 2022を起動し、[新しいプロジェクト] > [ASP.NET Core Web アプリ (Model-View-Controller)]の順に選択し、任意のプロジェクト名を入力します。

[フレームワーク]で[.NET 6.0]を選択。
その他はデフォルトのまま進めます。

VB-ReportのNuGetパッケージをインストールする

NuGetでVB-Reportのパッケージをインストールします。

ソリューションエクスプローラーの[依存関係]を右クリックし、[NuGet パッケージの管理]を選択。
[参照]タブから「AdvanceSoftware.VBReport.CellReport」で検索します。

表示される、「AdvanceSoftware.VBReport.CellReport」をインストールしてください。

VB-ReportのWeb用ビューアを追加する

VB-ReportのWeb用ビューアを追加します。

インストールしたVB-Report体験版のインストールフォルダ内の[Bin] > [v11.X.X] > [Scripts]フォルダより下記ファイルをコピーし、プロジェクトの「wwwroot」直下の「js」フォルダに格納します。

  • cellreport.viewer.11.X.X.js[X部分はバージョンごとで異なります。]
  • jquery-1.10.2.min.js
  • gunzip.min.js

ソースコードの修正

HomeController.Indexメソッド内でWeb用ビューアにプレビューするためのドキュメントを作成します。

// Controllers/HomeController.cs
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using VBR11WebSample.Models;
using AdvanceSoftware.VBReport;  // 名前空間を追記

namespace VBR11WebSample.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
        public IActionResult Index()
        {
            // インスタンスを生成
            CellReport cellReport1 = new CellReport();
            // 帳票作成処理
            cellReport1.Report.Start();
            cellReport1.Report.Create(ExcelVersion.ver2021);
            cellReport1.Page.Start("Sheet1", "1-9999");
            cellReport1.Cell("A1").Value = "VB-Report11をWebアプリに組み込みWindows Server 2022にデプロイする";
            cellReport1.Page.End();
            cellReport1.Report.End();
            // SVGZ 形式で帳票ドキュメントを取得します。
            string reportDocument = cellReport1.Report.GetSvgzReport(SvgSaveType.IncludeExcelPdf);
            ViewData["document"] = reportDocument;

            return View();
        }
        // 以降、関係ない箇所は省略~
    }
}

ホーム画面にWeb用ビューアを追加します。

<!-- Views/Home/Index.cshtml -->
<script type="text/javascript" src="~/js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="~/js/gunzip.min.js"></script>
<!-- "*" には使用するスクリプトファイルのバージョンを入力 -->
<script type="text/javascript" src="~/js/cellreport.viewer.11.*.*.js"></script>

<!--帳票ドキュメント格納用のDIV要素(id="documentcontainer")を用意。ViewData で帳票ドキュメントを挿入-->
<div id="documentcontainer" style="display:none;">
    @Html.Raw(ViewData["document"])
</div>

<!--ビューア配置用のDIV要素(id="viewercontainer")を用意。width、height でサイズ指定-->
<div id="viewercontainer" style="width:100%;height:650px;" >
</div>

<!--ビューアの表示とプレビュー実行-->
<script type="text/javascript">
$(function() {
    // ビューアを id名[viewercontainer] の DIV 要素に表示
    viewer = new CellReport.Viewer('viewercontainer');
    // id名[documentcontainer] の DIV 要素に格納された帳票ドキュメントを読み込み、プレビューを実施
    viewer.report('documentcontainer');
});
</script>

Webアプリはこれで完成です。

なお、ここで作成したサンプルは以下のリンクからダウンロードできます。

https://www.adv.co.jp/download/blog/deploy-vbreport11-windowsserver2022/VBR11WebSample.zip

実行環境の設定

以下の作業を行います。

  • IISの有効化、設定
  • .NET 6ランタイムのインストール

IISの有効化

サーバーマネージャーのダッシュボードから[役割と機能の追加]を選択し、以下の内容で機能のインストールを行います。

インストールの種類:役割ベースまたは機能ベースのインストール
サーバーの役割:Web サーバー (IIS)

サーバーの役割から[Web サーバー(IIS)]にチェックを入れます。

チェックを入れると以下のポップアップが出てくるので、そのまま機能の追加を押下。

後はデフォルトのまま[次へ]で画面を進めます。
[インストール オプションの確認]画面で[必要に応じて対象サーバーを自動的に再起動する]にチェックを入れた状態でインストールを実行します。

インストールが完了しました。

実行環境のブラウザからhttp://localhostにアクセスしてデフォルトページが表示されれば正常にIISが起動しています。

.NET 6ランタイムのインストール

以下のリンクから.NET 6のインストーラーをダウンロードします。
インストーラーは[ASP.NET Core ランタイム 6.0.x] > [Windows] > [Hosting Bundle]をダウンロードしてください。
Hosting Bundleには、.NET(Core)のWebアプリをIISで動かすために必要なモジュールが含まれています。

https://dotnet.microsoft.com/ja-jp/download/dotnet/6.0

インストーラーを実行して.NET 6のランタイムをインストールします。

デプロイ

ここからはサーバーにファイル類を配置して動かすための設定を行っていきます。

  1. デプロイ環境にWebアプリを配布
  2. IISでWebサイトを追加する

公開用のファイル類を出力する

ソリューションエクスプローラーでプロジェクトを右クリックし、[発行]を選択。

[ターゲット] > [フォルダー]を選択します。

[フォルダーの場所]で入力した先にデプロイ用の資源が出力されます。
今回はデフォルトのまま進めます。

先程の画面で[完了]をクリックしただけでは、まだファイル類の出力は行われません。
タブ内右上にある[発行]ボタンをクリックします。

ファイル類の出力が行われています。

完了すると[ターゲットの場所]のパスにファイル類が出力されています。

出力されたファイル類をサーバーに移動

出力されたファイル類をサーバーに移します。
今回はリモートデスクトップで繋いでいたのでサーバーのデスクトップに直接コピーしました。

IISのホームディレクトリが置かれている「C:\inetpub」フォルダ直下に資源を移動します。

IISでWebサイトを追加する

まずは.NETのWebアプリを実行するためのアプリケーションプールを追加します。
IISマネージャーの左のメニューの[アプリケーションプール]を右クリックし、[アプリケーションプールの追加]を選択。

名前は任意なので自身が管理しやすい名前をつけてください。
この設定で重要なのは[.Net CLR バージョン]をマネージドコードなしにすることです。
[マネージドパイプラインモード]は[統合]のままで進めます。

IIS マネージャーを開き、左のメニューの[サイト]を右クリックし、[Web サイトの追加]を選択。

サイト名はIISでの管理上の名前です。
今回は「test」としました。

[アプリケーション プール]の右隣りにある[選択]をクリックし、アプリケーションプールを先程作った「.NET6」に変更します。

コンテンツディレクトリの物理パスで、Webサイトのホームディレクトリを設定します。 今回は「C:\inetpub\publish」になります。

デフォルトのWebサイトが80番のポートで稼働しているので、ポートは81番で設定します。ポートが競合しても警告を無視して進めることはできますが、競合したサイトの内いずれか1つしか起動できません。

http://localhost:81にアクセスして以下の画像のような Web 用ビューアでプレビューが表示されたら完了です。
Web 用ビューアの左上のボタンから Excel/PDF ファイル出力や印刷を行うこともできます。

さいごに

VB-Report11をWebアプリに組み込んでWindowsServer2022へデプロイするまでを解説してきました。

実行環境での設定などが間違っていると動かない場合もあるので以下の点に注意してください。

  • .NET 6は「Hosting Bundle」をインストールする
  • IISのアプリケーションプールは「マネージコードなし」にする
  • IISでWebサイトの追加時、ポートの競合を避ける

今回は以上です。ありがとうございました。

参考

IIS に ASP.NET Core アプリを発行する | Microsoft Learn

© 2022 Advance Software Co., Ltd. All Rights Reserved.