您的位置:首页 > 其它

WCF远程服务器强制关闭了一个连接

2010-04-20 11:03 197 查看
定义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方法时服务端虽能正常保存数据,但会抛出一个"远程服务器强制关闭了一个连接"的异常,这样的异常让人摸不着头绪,这个小小的疏忽导致此问题花了两天时间才找到问题根本原因(在此汗一下。。。)。

特别记录在此,警示后人也督促自己以后别再犯类似错误!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐