Windows サービスでホストされる WCF サービスを作成する
Visual Studio を開いて、Windows サービス プロジェクトを作成します。

Service1.cs のデザイナーを開きます。

サービスの名前を自分で選んだ名前に変更します。

ウィンドウを右クリックし、メニューから[インストーラーの追加]を選択します。

serviceInstaller1 コンポーネントのプロパティを編集して、DisplayName を設定します。

serviceProcessInstaller1 のコンポーネント プロパティで、サービスのアカウントの種類を LocalSystem に設定します。

プロジェクトの参照に System.ServiceModel と FastReport.Service.dll を追加します。

アプリケーション構成ファイルを作成します。

新しい app.config ファイルに次のテキストをコピーします。
<?xml version="1.0"?>
<configuration>
<appSettings>
<!-- レポートを置くフォルダーへのパス -->
<add key="FastReport.ReportsPath" value="C:\Program files (x86)\FastReports\FastReport .NET Professional\Demos\Reports" />
<!-- レポートの接続文字列の名前 -->
<add key="FastReport.ConnectionStringName" value="FastReportDemo" />
<!-- 使用可能な形式 PDF、DOCX、XLSX、PPTX、RTF、ODS、ODT、MHT、CSV、DBF、XML、TXT、FPX のカンマ区切りのリスト。
このリストの項目は、順序を変えても削除してもかまいません。 -->
<add key="FastReport.Gear" value="PDF,DOCX,XLSX,PPTX,RTF,ODS,ODT,MHT,CSV,DBF,XML,TXT,FPX" />
</appSettings>
<connectionStrings>
<add name="FastReportDemo" connectionString="XsdFile=;XmlFile=C:\Program Files (x86)\FastReports\FastReport .NET Professional\Demos\Reports\nwind.xml"/>
</connectionStrings>
<system.web>
<compilation debug="true" />
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
<!-- サービス ライブラリ プロジェクトを配布する場合は、構成ファイルの内容をホストの app.config ファイルに追加する必要があります。
System.Configuration はライブラリの構成ファイルをサポートしていません。 -->
<system.serviceModel>
<services>
<service behaviorConfiguration="FastReportServiceBehavior" name="FastReport.Service.ReportService">
<endpoint address="" binding="wsHttpBinding" contract="FastReport.Service.IFastReportService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8732/FastReportService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="FastReportServiceBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding messageEncoding="Mtom"
closeTimeout="00:02:00" openTimeout="00:02:00"
receiveTimeout="00:10:00" sendTimeout="00:02:00"
maxReceivedMessageSize="67108864" maxBufferSize="65536"
transferMode="Streamed">
<security mode="None">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
</startup>
</configuration>
Service1.cs のエディターに移動して次の行を追加します。
using System.ServiceModel;
サービスのクラスを次のように変更します。
public partial class ReportService : ServiceBase
{
ServiceHost reportHost;
public ReportService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
if (reportHost != null)
reportHost.Close();
reportHost = new ServiceHost(typeof(FastReport.Service.ReportService));
reportHost.Open();
}
protected override void OnStop()
{
reportHost.Close();
reportHost = null;
}
}
.NET Framework に付属しているコマンド ライン ユーティリティ InstallUtil.exe を使用して、サービスをインストールすることができます。たとえば、次のように実行します。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\Program Files\FRRep.Net\WCFWindowsService\WCFWindowsService\bin\Debug\WCFWindowsService.exe"
次のコマンドによってサービスを開始できます。
net start ReportService
Web ブラウザーを開いて、http://localhost:8732/FastReportService/ アドレスを確認します。このアドレスは app.config の baseAddress で設定されたものです。フォルダーやポートは自分で選んだものに変更することができます。
サービスを停止するコマンドとサービスをアンインストールするコマンドは以下のとおりです。
net stop ReportService
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u "C:\Program Files\FRRep.Net\WCFWindowsService\WCFWindowsService\bin\Debug\WCFWindowsService.exe"