2012-06-17 54 views
0

是否有可能使用Wcf UdpDiscoveryEndpoint广播地址而不是多播? 我试过使用广播地址,但引发了一个异常,这是WcfDiscovery的限制吗?UdpDiscoveryEndpoint与广播地址

这是个例外:

System.Net.Sockets.SocketException (0x80004005): The requested address is not valid in its context 
    at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) 
    at System.Net.Sockets.Socket.Bind(EndPoint localEP) 
    at System.ServiceModel.Channels.UdpUtility.BindSocket(Socket socket, IPEndPoint localEndpoint) 
    at System.ServiceModel.Channels.UdpUtility.CreateListenSocket(IPAddress ipAddress, Int32& port, Int32 receiveBufferSize, Int32 timeToLive, Int32 interfaceIndex, Boolean allowMulticastLoopback, Boolean isLoopbackAdapter) 
    at System.ServiceModel.Channels.UdpChannelListener.InitSockets(Boolean updateListenPort) 
    at System.ServiceModel.Channels.UdpChannelListener..ctor(IUdpTransportSettings settings, BindingContext context) 
    at System.ServiceModel.Channels.UdpTransportBindingElement.BuildChannelListener[TChannel](BindingContext context) 
    at System.ServiceModel.Channels.BindingContext.BuildInnerChannelListener[TChannel]() 
    at System.ServiceModel.Channels.MessageEncodingBindingElement.InternalBuildChannelListener[TChannel](BindingContext context) 
    at System.ServiceModel.Channels.TextMessageEncodingBindingElement.BuildChannelListener[TChannel](BindingContext context) 
    at System.ServiceModel.Channels.BindingContext.BuildInnerChannelListener[TChannel]() 
    at System.ServiceModel.Channels.Binding.BuildChannelListener[TChannel](Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, BindingParameterCollection parameters) 
    at System.ServiceModel.Description.DispatcherBuilder.MaybeCreateListener(Boolean actuallyCreate, Type[] supportedChannels, Binding binding, BindingParameterCollection parameters, Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, ServiceThrottle throttle, IChannelListener& result, Boolean supportContextSession) 
    at System.ServiceModel.Description.DispatcherBuilder.BuildChannelListener(StuffPerListenUriInfo stuff, ServiceHostBase serviceHost, Uri listenUri, ListenUriMode listenUriMode, Boolean supportContextSession, IChannelListener& result) 
    at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) 
    at System.ServiceModel.ServiceHostBase.InitializeRuntime() 
    at System.ServiceModel.ServiceHostBase.OnBeginOpen() 
    at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 
    at System.ServiceModel.Channels.CommunicationObject.Open() 

回答

0

我在一个客户的服务器有同样的问题。事实证明,他有两台配置了重叠子网掩码的网络设备。因此udpDiscoveryEndpoint无法以上述例外开始监听。