Wcf restful 趟过的坑

本文记录了在使用Wcf Restful接口时遇到的问题,包括POST调用时输入Json报错以及返回数据实体结构导致的错误。解决方法包括确保接口使用正确的实体类接收json数据,以及根据json结构定义实体结构,避免多重结构嵌套。推荐使用在线工具http://json2csharp.chahuo.com/进行json到实体类的自动转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    /// 说明:GET请求
    /// WebGet默认请求是GET方式        
    /// UriTemplate(URL Routing)的参数名name必须要方法的参数名必须一致(不区分大小写)
    /// RequestFormat规定客户端必须是什么数据格式请求的(JSon或者XML),不设置默认为XML
    /// ResponseFormat规定服务端返回给客户端是以是什么数据格返回的(JSon或者XML)

    /// 说明:POST请求
    /// WebInvoke请求方式有POST、PUT、DELETE等,所以需要明确指定Method是哪种请求的,这里我们设置POST请求。
    /// 注意:POST情况下,UriTemplate(URL Routing)一般是没有参数(和上面GET的UriTemplate不一样,因为POST参数都通过消息体传送)        
    /// RequestFormat规定客户端必须是什么数据格式请求的(JSon或者XML),不设置默认为XML
    /// ResponseFormat规定服务端返回给客户端是以是什么数据格返回的(JSon或者XML)
    /// 
    [ServiceContract]
    public interface IRiskWcfServer
    {
        /// <summary>
        /// xxxxx      
        /// </summary>
        /// <param name="rwts_param"></param>
        /// <returns></returns>
        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "GetRiskResearchData", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        ResultMessage GetRiskResearchData(RiskJudgeEntiy riskParam);

        /// <summary>
        /// xxxxxx
        
        /// </summary>
        /// <param name="riskParam"></param>
        [OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "RiskInformEvent", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        void RiskInformEvent(string riskParam);

        // TODO: 在此添加您的服务操作      
    }  

初入Wcf restful  趟过一些坑,做下记录,下次翻查。

错误描述:接口Post 调用,输入数字能正常回调参数,输入Json串,报错:the server encounterer an error prossing the request

为此郁闷了好久,

后来翻看了错误代码:

接口使用json 协议,类库会自动进行序列化操作,接口定义处,接受需用实体类接收。

2、返回数据实体结构问题

返回数据实体结构会序列化为json格式传输,最好根据输出的json串定义好实体结构,自己定义可能会出错,多重结构嵌套,我使用过object来定义实体类内部字段类型,解析不了。

可以参考网站:http://json2csharp.chahuo.com/  自动转换实体

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值