Я искал решение, но не смог его найти.
Вот код для службы Windows.
protected override void OnStart(string[] args)
{
Debugger.Launch();
try {
AsynchronousSocketListener.StartListening();
// Log an event to indicate successful start.
EventLog.WriteEntry("Successful start.", EventLogEntryType.Information);
}
catch(Exception ex)
{
// Log the exception.
EventLog.WriteEntry(ex.Message, EventLogEntryType.Error);
}
}
Вот класс AsynchronousSocketListner
static string constr = "Integrated Security=SSPI;Persist Security Info=False;Data Source=WIN-OTVR1M4I567;Initial Catalog=CresijCam";
//string test = constr;
// Thread signal.
public static ManualResetEvent allDone = new ManualResetEvent(false);
private AsynchronousSocketListener()
{
}
public static void StartListening()
{
// Establish the local endpoint for the socket.
// The DNS name of the computer
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 1200);
// Create a TCP/IP socket.
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Bind the socket to the local endpoint and listen for incoming connections.
try
{
listener.Bind(localEndPoint);
listener.Listen(200);
while (true)
{
// Set the event to nonsignaled state.
allDone.Reset();
// Start an asynchronous socket to listen for connections.
listener.BeginAccept(
new AsyncCallback(AcceptCallback),
listener);
// Wait until a connection is made before continuing.
allDone.WaitOne();
}
}
catch (Exception e)
{
string me = e.Message;
}
}
Я получаю разные сообщения об ошибках каждый раз:
Тайм-аут (30000 миллисекунд) достигнут при ожидании ответа транзакции от службы TCPService.
Служба не может быть запущена. Процесс обслуживания не может подключиться к сервисному контроллеру
Я не знаю, откуда исходит ошибка, которую я получаю. Я знаю одно, что сервис еще не запущен. и именно в этом методе startListening (). Я отладил с помощью Debugger.launch (). Но я не иду к определенной линии.
Я также думаю, что это где-то связано с TCP, но точно ничего.
Тот же код находится в рабочем состоянии для консольного проекта.
Я не знаю, какой другой код поставить здесь. Но, пожалуйста, дайте мне знать, если потребуется дополнительная информация.