另人崩溃的WCF,无法访问已释放的对象

ooaaooxx 2010-03-15 01:18:42
问题:
[WebMethod(EnableSession = true)]
public object ReceiveMessage(Guid userid)
{
if (OC.State == System.ServiceModel.CommunicationState.Closed) OC.Open();
var select = from i in OC.ReceiveMessage(userid, (Model.User)Session["user"]) where i.Loaded == false select new { SenderName = OC.GetInfoByID((Guid)i.Send_ID).Name,ID = i.ID };
OC.Close();
return select;
}
这里一共有两个地方调用wcf, OC.ReceiveMessage和 OC.GetInfoByID
前面调用的时候一切正常,到后面调用的时候就会报错: 无法访问已释放的对象

郁闷,中间就没有什么关闭的代码,搞不定啊。。。。。。。。。。。。。。

...全文
500 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbmscomm 2010-05-01
  • 打赏
  • 举报
回复
或者用USING
ooaaooxx 2010-03-15
  • 打赏
  • 举报
回复
明白了,那应该是select不是马上就执行的,
看来还是自己水平太低啊。

非常感谢!
xray2005 2010-03-15
  • 打赏
  • 举报
回复
因为你先Close,再才return了。先关闭了

你应该先return,再关闭.

xray2005 2010-03-15
  • 打赏
  • 举报
回复
[WebMethod(EnableSession = true)]
public object ReceiveMessage(Guid userid)
{
类型 OC=null;
try
{
if (OC.State == System.ServiceModel.CommunicationState.Closed) OC.Open();
var select = from i in OC.ReceiveMessage(userid, (Model.User)Session["user"]) where i.Loaded == false select new { SenderName = OC.GetInfoByID((Guid)i.Send_ID).Name,ID = i.ID };
return select;

}
finally
{
if(0C!=null)
OC.Close();
}

}

ooaaooxx 2010-03-15
  • 打赏
  • 举报
回复
我已经放出我全部的分数了,大家帮帮忙啊。

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧