4

NServiceBus.host.exeで/installフラグを呼び出すと、アプリケーションイベントログの下にイベントログソースが作成されることに気付きました。問題は、同じソースにカスタムイベントログの下でイベントを書き込むようにNServiceBusL4Nを構成したことです。

カスタムイベントログの下にソースを作成すると、インストールが失敗するため、これにより問題が発生します(NserviceBusインストーラーがSystem.ArgumentExceptionをスローします:ソースblahはローカルコンピューターに既に存在します)。

では、NServiceBusインストーラーがアプリケーションイベントログの下にイベントソースを作成しようとするのを防ぐにはどうすればよいでしょうか。

NServiceBus3.0.1.0を使用しています

ありがとう

編集-完全なスタックトレース

Creating EventLog source blah in log Application...

An exception occurred during the Install phase.
System.ArgumentException: Source blah already exists
on the local computer.

The Rollback phase of the installation is beginning.
Restoring event log to previous state for source blah
.
Service blah is being removed from the system...
Service blah was successfully removed from the system
.

The Rollback phase completed successfully.

Unhandled Exception: System.InvalidOperationException: The installation failed, and the rollback has been performed. ---> System.ArgumentException: Source blah already exists on the local computer.
   at System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData)
   at System.Diagnostics.EventLogInstaller.Install(IDictionary stateSaver)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.ServiceProcess.ServiceInstaller.Install(IDictionary stateSaver)
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at Topshelf.Internal.Hosts.HostServiceInstaller.Install(IDictionary stateSaver) 
in d:\dev\open-source\topshelf\src\Topshelf\Internal\Hosts\HostServiceInstaller.cs:line 120
   at System.Configuration.Install.Installer.Install(IDictionary stateSaver)
   at System.Configuration.Install.TransactedInstaller.Install(IDictionary savedState)
   --- End of inner exception stack trace ---
   at System.Configuration.Install.TransactedInstaller.Install(IDictionary savedState)
   at Topshelf.Internal.Hosts.HostServiceInstaller.Register() in d:\dev\open-source\topshelf\src\Topshelf\Internal\Hosts\HostServiceInstaller.cs:line 61
   at Topshelf.Internal.Actions.InstallServiceAction.Do(IRunConfiguration configuration) in d:\dev\open-source\topshelf\src\Topshelf\Internal\Actions\InstallServiceAction.cs:line 42
   at Topshelf.Runner.Host(IRunConfiguration configuration, String[] args) in d:\dev\open-source\topshelf\src\Topshelf\Runner.cs:line 70
   at NServiceBus.Hosting.Windows.Program.Main(String[] args) in d:\BuildAgent-03\work\nsb.masterbuild1\src\hosting\NServiceBus.Hosting.Windows\Program.cs:line 122
4

2 に答える 2

2

この問題は、エンドポイント名と同じイベントソース名でLog4netを設定した場合にのみ発生します。

したがって、イベントログで別のソース名を使用できます(この場合は<endpoint-name>.l4n)。これは今のところ問題を回避します。

于 2012-04-10T15:00:53.470 に答える
2

物事が本当に洋ナシの形になっている場合は、レジストリでイベントログのソースを見つけることができます

HKLM/SYSTEM/ControlSet001/services/eventlog/...

そこから、不要になったイベントログソースを手動で削除できます。

于 2012-07-21T12:01:31.327 に答える