不相关的地址失败时抛出ConfigurationErrorsException

时间:2014-08-06 21:49:50

标签: c# wcf .net-4.5

我有两个服务设置。 Service1工作正常。 Service2的地址不好。为什么当我尝试调用Service1时它失败并出现错误:

the value of the property 'address' cannot be parsed

如果我在Service2上修复了坏地址,那么事情就会重新开始。我希望Service1能够继续运行,即使Service2被破坏了。

代码

            try
            {
                var client = new FooWurldClient();
                Console.WriteLine(client.DoWork());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
;

            try
            {
                var client2 = new HelloWorldService.HelloWorldClient();
                Console.WriteLine(client2.DoWork());
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex.Message);
            }

配置

地址错误

<endpoint address="http://localhost:631562222/BadService.svc"

请注意,即使我注释掉client2(服务质量差)代码,client1(良好服务)也会失败。

2 个答案:

答案 0 :(得分:0)

解析器在某种程度上足够聪明,可以识别端口高于65535的最大临时端口。我将端口号降低到范围内的一些随机无效端口号,故障消失了。

看到这一点仍然令人惊讶。

答案 1 :(得分:0)

运行时在启动应用程序代码之前读取配置。由于地址不好而导致读数异常抛出,并未陷入您期望的位置,在终点线后不久说,导致整个读取失败;所以所有的服务都失败了。

如果您在应用程序代码中分配了错误地址,可能是通过通用设计,可能会隔离错误端口号的错误。

尽管如此,我确实认为在配置中超出边界的坏端口是一个严重的错误,基本上是格式错误的XML或不合格的架构,运行时间应该在启动所有服务时失败。对于这些问题,运行时间是一致的。