Я определил атрибут OneWay в некоторых методах моего сервиса, но они не ведут себя как вызов Oneway.Мой клиент ожидает завершения вызова и возврата из службы.Я предполагаю, что операции Oneway являются неблокирующими операциями, и клиенту все равно, что происходит с вызываемой функцией.Он просто звонит и забывает об этом.Это правильно?
Проблема: После вызова OperationContract2 я немедленно закрываю прокси-сервер, но мой клиент ждет завершения выполнения.
if (((ICommunicationObject)myServices).State == CommunicationState.Opened)
{
((ICommunicationObject)myServices).Close();
}
Что-то не так с конфигами?
Конфигурация сервера:
<netTcpBinding>
<binding name="GoCustomBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="0" maxReceivedMessageSize="2147483647">
</binding>
</netTcpBinding>
Сервисный контракт:
[ServiceContract]
public interface IMyServices
{
[OperationContract(IsOneWay = true, Action = "*")]
void OPeration1(List<int> someIds);
[OperationContract(IsOneWay = true)]
void OPeration2(SomeClass p1);
}
Клиентский прокси:
[ServiceContract]
public interface IMyServices
{
[OperationContract(IsOneWay = true, Action = "*")]
void Operation1(List<int> someIds);
[OperationContract(IsOneWay = true)]
void Operation2(SomeClass p1);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class ServiceClient : ClientBase<IMyServices>, IMyServices
{
public void ScheduleOptimization(List<int> someIds)
{
Channel.Operation1(routeID);
}
public void Operation1(SomeClass p1)
{
Channel.Operation2(pasDataMsg);
}
}