zoukankan      html  css  js  c++  java
  • WCF远程服务器强制关闭了一个连接

    定义ActionResult类的代码
        /// <summary>
        
    /// 不同程序集之间方法调用时的结果类,主要用于WCF多层通讯
        
    /// </summary>
        [Serializable]
        
    //[DataContract]
        public class ActionResult : MarshalByRefObject
        {
        ...
        }

        
    /// <summary>
        
    /// 不同程序集之间方法调用时的结果类(泛型版本),主要用于WCF多层通讯
        
    /// </summary>
        
    /// <typeparam name="T">返回值的类型</typeparam>
        public class ActionResult<T> : ActionResult
        {
        ...
        }

    在WCF服务中定义下面的方法:

            /// <summary>
            
    /// 提交成本编码到WCF保存,返回操作结果
            
    /// </summary>
            
    /// <param name="costcode">成本编码</param>
            
    /// <returns>通过ActionResult.Succeed属性获取操作是否成功</returns>
            public ActionResult SubmitCostcode(Costcode costcode)
            {
                var rlt 
    = new ActionResult<Costcode>();//<1>
                using (var ctx = new BasicDataEntities())
                {
                    ctx.Costcodes.ApplyChanges(costcode);
                    rlt.Succeed 
    = ctx.SaveChanges() > 0;
                }
                
    return rlt;
            }

    由于在上面<1>行不小心将rlt变量声明为ActionResult<Costcode>类型,而非ActionResult类型,编译时不会出现任何警告或错误,运行时会导致客户端调用SubmitCostcode方法时服务端虽能正常保存数据,但会抛出一个"远程服务器强制关闭了一个连接"的异常,这样的异常让人摸不着头绪,这个小小的疏忽导致此问题花了两天时间才找到问题根本原因(在此汗一下。。。)。

    特别记录在此,警示后人也督促自己以后别再犯类似错误!

  • 相关阅读:
    学习进度
    移动端使用rem.js,解决rem.js 行内元素占位问题
    利用递归实现数组的扁平化
    ES6 新增声明变量的 var let const 的区别详解
    js学习笔记
    ajax中error函数参数与返回值详解 200 300 400 500
    处理 vue项目 打包后导致css文件引用静态目录路径异常的问题
    vue-cli3 配置 vue.config.js
    使用 vue-cli3 搭建一个项目
    vue-router params 和 query 的区别
  • 原文地址:https://www.cnblogs.com/wiseant/p/1715971.html
Copyright © 2011-2022 走看看