如何在我的代码块中捕获CLR异常(C#)

时间:2017-11-20 16:25:48

标签: c# exception-handling try-catch clr

这是我的代码:

private Message SendMessage(ref Message message, string serviceURL)
    {
        Message result = null;

        try
        {
            IRequestChannel channel = null;
            BasicHttpBinding binding = ...;

            using (var cf = new ChannelFactory<IRequestChannel>(binding, new EndpointAddress(serviceURL)))
            {
                foreach (OperationDescription op in cf.Endpoint.Contract.Operations)
                {
                    op.Behaviors.Remove<DataContractSerializerOperationBehavior>();
                }

                cf.Open();
                channel = cf.CreateChannel();
                channel.Open();

                result = channel.Request(message);

                channel.Close();
                cf.Close();
                channel = null;
            }
            binding = null;
        }
        catch (Exception ex)
        {
            Logger.LogError("Error parsing SOAP", ex.Message);
        }
        return result;
    }

在线result = channel.Request(message);

我在下面的图片中收到了错误信息。但是,我只有在转向&#34; 休息 &#34; 发生CLR异常。当我不进行调试时,我的代码不会进入catch块。

enter image description here

1 个答案:

答案 0 :(得分:-1)

看起来您尝试将值为'= X'的字符串序列化或反序列化为bool。我认为您应该检查合同或检查您的message对象。

.net代码中的某处代码调用XmlConvert.ToBoolean(String)方法。它的有效值为01 Link to doc