无法访问处置的对象。 对象名称:'System.Net.Sockets.TcpClient'。我得到这个错误,我不明白为什么,在我的MVC项目中使用NoRM和Mongo
我不明白为什么会发生,以及如何处理它。我使用Ninject,我的应用程序基于mvcstarter.codeplex.com/。我所做的是从我的数据库中删除一些用户或页面,并且无缘无故发生(我可以找到)。
任何帮助,将不胜感激!
非常感谢!
*编辑 此外,一段时间后,它恢复正常,我可以从蒙戈获取我的数据...我的单元测试,做工精细...
这是我为我的会议代码:
public class MongoSession : ISession{
private readonly Mongo _server;
public MongoSession()
{
//this looks for a connection string in your Web.config - you can override this if you want
_server = Mongo.Create("MongoDB");
}
public T Single<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression) where T : class {
return _server.GetCollection<T>().AsQueryable().Where(expression).SingleOrDefault();
}
public IQueryable<T> All<T>() where T : class {
return _server.GetCollection<T>().AsQueryable();
}
/*public void Add<T>(T item) where T : class {
_provider.DB.GetCollection<T>().Insert(item);
}*/
public void Save<T>(IEnumerable<T> items) where T : class {
foreach (T item in items) {
Save(item);
}
}
public void Save<T>(T item) where T : class {
var errors = DataAnnotationsValidationRunner.GetErrors(item);
if (errors.Count() > 0)
{
throw new RulesException(errors);
}
_server.Database.GetCollection<T>().Save(item);
}
//this is just some sugar if you need it.
/*public T MapReduce<T>(string map, string reduce) {
T result = default(T);
using (MapReduce mr = _provider.Server.CreateMapReduce()) {
MapReduceResponse response =
mr.Execute(new MapReduceOptions(typeof(T).Name) {
Map = map,
Reduce = reduce
});
MongoCollection<MapReduceResult<T>> coll = response.GetCollection<MapReduceResult<T>>();
MapReduceResult<T> r = coll.Find().FirstOrDefault();
result = r.Value;
}
return result;
}*/
public void Delete<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression) where T : class
{
var items = All<T>().Where(expression);
foreach (T item in items)
{
Delete(item);
}
}
public void Delete<T>(T item) where T : class
{
_server.GetCollection<T>().Delete(item);
}
public void Drop<T>() where T : class
{
_server.Database.DropCollection(typeof(T).Name);
}
/*public void CommitChanges()
{
//mongo isn't transactional in this way... it's all firehosed
}*/
public void Dispose() {
_server.Dispose();
}
}
,并且调用的代码会是这样的,我是_session传递给我的控制器使用Ninject的contrutor,在我global.cs绑定:
Bind<ISession>().To<MongoSession>().InSingletonScope();
public virtual ActionResult Liens()
{
var shortcutLionks = _session.All<ShortcutLinks>().ToList();
ViewData.Model = shortcutLionks.Count > 0 ? shortcutLionks[0] : new ShortcutLinks();
return View();
}
编辑:
这里是我的错误的细节:
堆栈跟踪:在 System.Net.Sockets.TcpClient.GetStream() 在Norm.Connection.GetStream()在 Norm.Connection .WRITE(字节[]字节, 的Int32开始,的Int32大小)在 Norm.Protocol.Messages.QueryMessage
2.Execute() at Norm.MongoQueryExecutor
3.d__0.MoveNext() 在 System.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable的源)在 Domain.Storage.MongoD B.MongoSession.Single [T](表达式1 expression) in C:\inetpub\wwwroot\DubeLoiselle\Domain\Storage\MongoDB\MongoSession.cs:line 21 at Domain.Storage.MongoDB.MongoRepositoryBase
1.单(在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext表达参数),ActionDescriptor actionDescriptor,IDictionary的2 parameters) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.b__a() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1续)在 系统。 Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext,IList的1 filters, ActionDescriptor actionDescriptor, IDictionary
2参数)在 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,字符串actionName)
再次编辑:
之前,我得到这个错误我这个陷阱之一:
无法将数据写入传输连接:一个现有的连接被强行关闭远程主机。
堆栈跟踪:在Norm.Norm.Connection.Write(Byte [] bytes,Int32 start,Int32 size)在System.Net.Sockets.NetworkStream.Write(Byte []缓冲区,Int32偏移量,Int32大小)。 Protocol.Messages.QueryMessage 2.Execute() at Norm.MongoQueryExecutor
3.d__0.MoveNext()at System.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable 1 source) at Norm.Linq.MongoQueryExecutor.Execute[T]() at Norm.Linq.MongoQueryProvider.ExecuteQuery[T](Expression expression) at Norm.Linq.MongoQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression) at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable
1 source)at Domain.Storage.MongoDB.MongoSession.Single [T](Expression 1 expression) in C:\inetpub\wwwroot\DubeLoiselle\Domain\Storage\MongoDB\MongoSession.cs:line 21 at Domain.Storage.MongoDB.MongoRepositoryBase
1。系统上System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext,IList 1 filters, ActionDescriptor actionDescriptor, IDictionary
2个参数)System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.b__a() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1 continuation)单个(表达式1 expression) in C:\inetpub\wwwroot\DubeLoiselle\Domain\Storage\MongoDB\MongoRepositoryBase.cs:line 26 at SPK.CMS.Domain.Repository.PageRepository.GetHomePage() in C:\inetpub\wwwroot\DubeLoiselle\SPK.CMS.Domain\Repository\PageRepository.cs:line 146 at SPK.CMS.Domain.Repository.PageRepository.GetByUrl(String url1, String url2, String url3) in C:\inetpub\wwwroot\DubeLoiselle\SPK.CMS.Domain\Repository\PageRepository.cs:line 195 at Web.Controllers.PageController.RedirectTo(String url1, String url2, String url3) in C:\inetpub\wwwroot\DubeLoiselle\Web\Controllers\PageController.cs:line 52 at lambda_method(ExecutionScope , ControllerBase , Object[]) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2参数) .Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,String actionName)
代码或它没有发生。 – jfar 2010-07-01 17:37:55
也需要调用代码。 – jfar 2010-07-01 18:36:49
任何人都有想法?在IIS应用程序池回收后,它恢复正常。 – VinnyG 2010-07-22 20:31:17