我正在与WCF一个很奇怪的问题。 我需要实现WCF服务有所恢复的行为,如果收到不可达的端点IP地址或服务无法绑定。 如果应用程序无法对服务创建例外,它终止它,并从用户请求另一个IP地址,并执行另一次尝试创建服务的流程很简单。 (代码段如下所示)。 如果地址是无效的,我得到:异常“TCP错误(10049请求的地址不在其上下文中有效),而在IP端点= .121.10.11.11听发生”,但出于某种原因,如果我尝试用第二次尝试有效的地址我已经得到了从以前的尝试错误的IP地址相同的异常。 下面是一个代码:
ServiceHost service = null;
try
{
Uri[] uris = { new Uri(Constants.PROTOCOL + "://" + address + ":" + port) };
service = new ServiceHost(typeof(IRemoteService), uris);
NetTcpBinding tcpBinding =
WcfTcpRemoteServicesManager.LessLimitedNewNetTcpBinding(int.MaxValue,
int.MaxValue, int.MaxValue);
ServiceEndpoint ep = service.AddServiceEndpoint(implementedContract.FullName,
tcpBinding, serviceName);
var throttle =
service.Description.Behaviors.Find<ServiceThrottlingBehavior>();
if (throttle == null)
{
throttle = new ServiceThrottlingBehavior
{
MaxConcurrentCalls = Constants.MAX_CONCURRENT_CALLS,
MaxConcurrentSessions = Constants.MAX_CONCURRENT_SESSIONS,
MaxConcurrentInstances = Constants.MAX_CONCURRENT_INSTANCES
};
service.Description.Behaviors.Add(throttle);
}
service.Open();
}
catch (Exception e)
{
_debugLog.WriteLineMessage(
"Failed to open or create service exception. Exception message:" +
e.Message);
if (service!=null)
{
try
{
service.Close();
}
catch (Exception)
{
service.Abort();
service.Close();
throw e;
}
}
}
谢谢