WCF发送相同的异常,即使服务端点地址是有效的(WCF sending the same excep

2019-10-28 13:50发布

我正在与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;
        }
    }
}

谢谢

Answer 1:

你赶上异常E,再后来你发现一个不同的异常,但是你把原来的异常即

不知道这是你的问题,但它可能会导致你得到一个令人困惑的异常了。

编辑

现在,我已经有点更仔细阅读。

问题是上下文和地址之间的不匹配。 我看到代码使用NetTcpBinding的:

  • 检查地址匹配,什么是CONSTANTS.Protocol的价值?
  • 检查是否有在配置文件中没有冲突。


文章来源: WCF sending the same exception even if the service endpoint address is valid