WCF客户端无法查看自定义故障异常

时间:2014-12-22 23:31:42

标签: c# asp.net web-services wcf faultexception

你可以从问题标题中看出我是WCF的新手。我已实现此Web服务,其中一个方法抛出自定义FaultException。

namespace Feed
{
    [ServiceContract]
    public interface IMyClass
    {
        [OperationContract]
        [FaultContract(typeof(CustomError))]
        DataSet MyMethod(int A, int T);
    }
    [DataContract]
    public class CustomError
    {
        public CustomError(string msg, int code, int id)
        {
            Id = id;
            ErrorMessage = msg;
            ErrorCode = code;
        }
        [DataMember]
        [DataMember]
        public string ErrorMessage
        {
            get;
            set;
        }

        [DataMember]
        public int ErrorCode
        {
            get;
            set;
        }

        [DataMember]
        public int Id
        {
            get;
            set;
        }
    }
}

然后,我在MyMethod

的实现中抛出了正确的异常
namespace Feeds
{
    public class MyClass : IMyClass
    {
        DataSet MyMethod(int A, int T)
        {
            try
            {
                //todo
                DataSet ds = new DataSet();
                return ds;
            }
            catch (Exception ex)
            {
                throw new FaultException<CustomError>(new CustomError("a", 1, 0));
            }
        }
    }
}

到目前为止一切顺利。现在我创建了一个使用此Web服务的简单ASP.NET网站。我在该网站中为MyClass.svc Web服务添加了一个WebReference。问题是,当我试图捕获异常时:     catch(FaultException ex)     {     } 它无法识别CustomError。我做了以下故障排除: 1.确保我已更新wsdl(完成了很多次,尝试更改其他内容,所有内容都反映在客户端) 2.尝试BasicHttpBinding以及wsHttpBinding(不确定是否有所作为) 3.用Google搜索,并虔诚地跟踪MSDN中的示例代码。

仍然没有运气!我错过了什么吗?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

发现问题所在。
我的ASP.NET网站是在.NET Framework 2.0上(默认情况下是VS 2010),我通过右键单击项目并选择“添加Web引用...”来添加对Web服务的引用。 /> 但是,我需要做什么,选择“添加服务引用..”将Web服务添加为服务引用。由于.NET 2.0不支持服务引用,我不得不将我的.NET框架升级到3.5,添加服务引用,一切都像魅力一样! This post在我脑海中点亮了灯泡。感谢大家为此付出的所有努力。

答案 1 :(得分:0)

[FaultContract(typeof(CustomError))]

MyMethod();