0
그들은 콘솔 응용 프로그램으로 완벽하게 작동합니다. 이것은 내가하는 일입니다 :TopShelf 서비스가 Windows 서비스로 설치되어있는 경우 사용자 지정 명령 줄 인수가 작동하지 않는 이유는 무엇입니까?
private static int Main()
{
string databaseName = null;
string databaseUser = null;
string databasePwd = null;
string port = null;
string logDirectory = null;
string strLogLevel = null;
var exitCode = HostFactory.Run(configurator =>
{
configurator.AddCommandLineDefinition("dbname", d => { databaseName = d; });
configurator.AddCommandLineDefinition("dbuser", d => { databaseUser = d; });
configurator.AddCommandLineDefinition("dbpassword", d => { databasePwd = d; });
configurator.AddCommandLineDefinition("port", p => { port = p; });
configurator.AddCommandLineDefinition("logdirectory", l => { logDirectory = l; });
configurator.AddCommandLineDefinition("loglevel", l => { strLogLevel = l; });
configurator.ApplyCommandLine();
int intPort = 7909;
if (port != null)
intPort = Convert.ToInt32(port);
SystemDataApplication.LogLevel logLevel = SystemDataApplication.LogLevel.Info;
if (strLogLevel != null)
logLevel = (SystemDataApplication.LogLevel)Convert.ToInt32(strLogLevel);
configurator.Service<SystemDataApplication>(service =>
{
service.ConstructUsing(() => new SystemDataApplication(databaseName, databaseUser, databasePwd, intPort, logDirectory, logLevel));
service.WhenStarted(a => a.Start());
service.WhenStopped(a => a.Stop());
});
configurator.SetDescription("An application to fetch system data.");
configurator.SetDisplayName("System Data Service");
configurator.SetServiceName("SystemDataService");
configurator.RunAsNetworkService();
});
return (int)exitCode;
}
콘솔 응용 프로그램은 콘솔 로그 응용 프로그램으로서 이것들은 모두 괜찮습니다. 명령 줄에 명령 (모든 사용자 정의 인수를 명령)을 설치하고 명령에서 모든 사용자 정의 인수를 시작하면 trace-log에서 비어 있습니다.
글쎄, 그들은 정말 이상한 이유가없는 것 같습니다. 누가 정상적인 콘솔 응용 프로그램을 작성하는 경우 Topshelf를 사용하려고합니다. 나는 그것을 다시 사용하지 않는다. –