以下のサービスを WCF で作成し、MSDN の「Windows サービスの作成」チュートリアルで指定された方法に従ってインストールしましたが、サービスを開始するたびに、サービスが開始されたことを示すポップアップが表示され、停止しました。なぜこれが起こっているのか、どうすれば修正できるのか、私は疑問に思っています。
サービスコード:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
using RemoteArchiverService;
namespace ORService
{
public partial class ORservice : ServiceBase
{
private ServiceHost ORAHost;
public ORservice()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
if (ORAHost != null)
{
ORAHost.Close();
}
// Open the ServiceHostBase to start listening for commands
ORAHost = new ServiceHost(typeof(OrionWCF));
ORAHost.Open();
}
protected override void OnStop()
{
ORAHost.Close();//stop listening
}
}
[ServiceContract(Namespace = "http://Blah.Blargh.ServiceBase")]
public interface IRemoteArchive
{
//functions
[OperationContract]
void CollectFilesAsync(DateTime start, DateTime end);
[OperationContract]
void ChangeExpireCheck(int daysToKeep);
[OperationContract]
void UpdateActiveProfiles(Profile P, bool AddRemove);
[OperationContract]
void UpdateProfileList(Profile P, bool AddRemove);
}
partial class OrWCF : IRemoteArchive
{
private List<Profile> ProfileList = new List<Profile>();
private List<Profile> ActiveProfiles = new List<Profile>();
private int DaysToKeepData = 30;
public void UpdateProfileList(Profile P, bool AddRemove)
{
...
}
public void UpdateActiveProfiles(Profile P, bool AddRemove)
{
...
}
public void ChangeExpireCheck(int daysToKeep)
{
...
}
public void CollectFilesAsync(DateTime start, DateTime end)
{
...
}
}
}
ログの読み出し:
サービスを開始できません。System.InvalidOperationException: サービス 'RemoteService.OrWCF' にはアプリケーション (非インフラストラクチャ) エンドポイントがありません。これは、アプリケーションの構成ファイルが見つからなかったか、サービス名に一致するサービス要素が構成ファイルに見つからなかったか、サービス要素にエンドポイントが定義されていなかったためである可能性があります。System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreApplicationEndpoints (ServiceDescription の説明) で System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost (ServiceDescription の説明、ServiceHostBase serviceHost) で System.ServiceModel.ServiceHostBase.InitializeRuntime() で System.ServiceModel.ServiceHostBase.OnBeginOpen ( ) System.ServiceModel.ServiceHostBase で。