У меня есть рабочий ServiceHost с одним NetTcpBinding и одной конечной точкой.
Я .Close()
это. Затем я создаю новый экземпляр ServiceHost с точно такой же конфигурацией, как и первый. Затем, когда я пытаюсь .Open()
новый экземпляр, я получаю это очень неловкое исключение:
System.ArgumentException occurred
Message=Instance 'LobbyService@net.tcp:||localhost:2718|game|' already exists in CounterSet 'e829b6db-21ab-453b-83c9-d980ec708edd'.
Parameter name: InstanceName
Source=System.Core
ParamName=InstanceName
StackTrace:
at System.Diagnostics.PerformanceData.CounterSetInstance..ctor(CounterSet counterSetDefined, String instanceName)
Кто-нибудь видел это раньше? Это ошибка в .NET Framework (кстати, я использую 4.0)?
Вероятно, актуальная информация о моем ServiceHost:
- Клиенты не подключены к хосту при его первом закрытии;
- Пользовательский
IInstanceProvider
используется для создания экземпляров;
- Переплет
ReliableSession
включен;
- Тип услуги помечен
ServiceBehavior
ниже;
.
[ServiceBehavior(
IncludeExceptionDetailInFaults = true,
InstanceContextMode=InstanceContextMode.PerSession,
ConcurrencyMode=ConcurrencyMode.Reentrant,
UseSynchronizationContext = false
)]
Я открыт, чтобы раскрыть любую дополнительную информацию, которую вы, возможно, захотите узнать о приложении.
Обновление 1 Я скомпилировал приложение для .NET 3.5, и ошибка НЕ произошла. К сожалению, я должен деактивировать все, что полагалось на Task
.
Обновление 2 Я зарегистрировал ошибку в Microsoft Connect об этой проблеме. Я думаю, что на этот вопрос уже дан ответ.