Я создал службу wcf, которая развернута через управляемую службу Windows.Функция onstart () создает и открывает tcp-хост для wcf serice.
все отлично работает в Windows 7, но когда я пытаюсь установить службу в Windows Server 2008 R2, служба запускается, а затем останавливаетсяс ошибкой, что иногда службы останавливаются, когда нечего делать.Он запускается под учетной записью сетевой службы.
Я не могу найти ничего полезного в журналах Windows.
Я пытался установить dubug build и вызвать debugger.launch (), но он не работает.Я не могу использовать remode debug, потому что процесс не остается открытым достаточно долго, чтобы я мог подключиться к нему.Я действительно не знаю, что делать.Вот мой код:
protected override void OnStart(string[] args)
{
System.Diagnostics.Debugger.Launch();
try
{
//if (!System.Diagnostics.EventLog.SourceExists("i2s CU Service (eng)"))
//{
// System.Diagnostics.EventLog.CreateEventSource("i2s CU Service", "Application");
//}
System.Diagnostics.EventLog.CreateEventSource("i2s CU Service", "Application");
}
catch (Exception)
{
//throw;
}
eventLog1.Source = "i2s CU Service";
eventLog1.Log = "Application";
if (serviceHost != null)
{
serviceHost.Close();
}
System.Configuration.AppSettingsReader reader = new System.Configuration.AppSettingsReader();
Uri tcpUri = null;
try
{
tcpUri = new Uri((string)reader.GetValue("Uri", typeof(string))); //net.tcp://localhost:8008/i2sServer
serviceHost = new ServiceHost(typeof(ConcurrentUsers), tcpUri);
// Create a binding that uses TCP and set the security mode to none.
NetTcpBinding b = new NetTcpBinding();
b.Security.Mode = SecurityMode.None;
// Add an endpoint to the service.
serviceHost.AddServiceEndpoint(typeof(IConcurrentUsers), b, "");
// Open the ServiceHostBase to create listeners and start
// listening for messages.
serviceHost.Open();
}
catch (Exception ex)
{
eventLog1.WriteEntry(ex.Message, EventLogEntryType.Error);
}
if (serviceHost.State == CommunicationState.Opened)
{
eventLog1.WriteEntry("Service started.", EventLogEntryType.Information);
}
}
protected override void OnStop()
{
if (serviceHost != null)
{
serviceHost.Close();
serviceHost = null;
}
eventLog1.WriteEntry("Service stopped.", EventLogEntryType.Information);
}
этот код как отлично работает в Windows 7, но я не могу запустить его на сервере Win 2008 R2.
Заранее спасибо