2
アプリケーションのサービスを初めてセットアップしたときは、Microsoft websiteのステップバイステップに従いました。ウェブサイトの指示に従ってeventLog1を作成するには、デザインビューに移動し、イベントログをドラッグしてサービスにドロップしました。そこから、ソースとログを追加する方法に従ったが、アプリケーションを実行すると、「ソースプロパティがイベントログに書き込む前に設定されていない」という状態が続きます。これらを作成するより良い方法はありますか?イベントログの外側では、サービスが正しく実行されます。コンストラクタFGLFileTransferService()
でサービスのイベントログで、ソースが設定されていないことを示すエラーが発生しました
public FGLFileTransferService()
{
eventLog1 = new System.Diagnostics.EventLog();
if (!EventLog.SourceExists("FGLTransferServiceSource"))
{
EventLog.CreateEventSource("FGLTransferServiceSource", "FGLTransferServiceLog");
}
eventLog1.Source = "FGLTransferServiceSource";
eventLog1.Log = "FGLTransferServiceLog";
InitializeComponent();
}
public void OnDebug()
{
OnStart(null);
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("Service Start");
Timer timer = new System.Timers.Timer();
//timer.Interval = 1;
timer.Elapsed += OnTimer; //new System.Timers.ElapsedEventHandler(this.OnTimer);
timer.Start();
}
スタックトレース
at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
at System.Diagnostics.EventLog.WriteEntry(String message)
at FGLFileTransfers.FGLFileTransferService.OnStart(String[] args) in C:\Users\brandon_paxton\Documents\Visual Studio 2015\Projects\FGLFileTransfers1.2\FGLFileTransfers\FGLFileTransferService.cs:line 42
at FGLFileTransfers.FGLFileTransferService.OnDebug() in C:\Users\brandon_paxton\Documents\Visual Studio 2015\Projects\FGLFileTransfers1.2\FGLFileTransfers\FGLFileTransferService.cs:line 37
at FGLFileTransfers.Program.Main(String[] args) in C:\Users\brandon_paxton\Documents\Visual Studio 2015\Projects\FGLFileTransfers1.2\FGLFileTransfers\Program.cs:line 26
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
私はあなたがコンストラクタの最初としてのInitializeComponent()を呼び出しだけにして、あなたの値を設定しなければならないと思います。それを試してみてください。 – pijemcolu
キリスト..ありがとう。私はそれをあまりにも長いこと考えて、私は何か間違ってイベントログを設定した – paxtuik