У меня есть некоторые устройства Pocket PC 4.2, которые обмениваются данными с сервером по беспроводной сети, используя WiFi через WCF.Все работает хорошо, пока беспроводная сеть не может подключиться к точке доступа и получить адрес DHCP (IP на адаптере - 0.0.0.0).В этот момент любые вызовы WCF на сервер никогда не вернутся.Если я назначаю статический IP-адрес беспроводному интерфейсу, эта проблема не возникает.
Ниже приведен соответствующий код, созданный программой NetCFSvcUtil.exe.Вызов Request () никогда не вернется.Если сетевой адаптер имеет действительный IP-адрес, а сервер не работает, время ожидания соединения истекает, как и ожидалось.Я попытался добавить параметр тайм-аута к вызову Request (), но безрезультатно.
Я могу установить устройства со статическими IP-адресами или определить, является ли IP-адрес недействительным, перед попыткой вызова WCF, но я хотел бы лучшеРешение, если возможно, спасибо!
private System.ServiceModel.Channels.Message getReply(System.ServiceModel.Channels.Message msg)
{
if ((this.RequestChannelFactory == null))
{
// transport doesn't support requests
throw new System.NotSupportedException();
}
System.ServiceModel.Channels.IRequestChannel requestChannel;
System.Threading.Monitor.Enter(this.RequestChannelFactory);
try
{
requestChannel = this.RequestChannelFactory.CreateChannel(this.remoteAddress);
}
finally
{
System.Threading.Monitor.Exit(this.RequestChannelFactory);
}
requestChannel.Open();
try
{
return requestChannel.Request(msg);
}
finally
{
if ((requestChannel.State == System.ServiceModel.CommunicationState.Opened))
{
requestChannel.Close();
}
}
}