2013-11-14 34 views
0

这是我第一个使用NHibernate的项目,它在这里的所有开发人员的计算机上都能正常工作。但是,当我将应用程序上传到我的服务器(它是一个共享服务器)时,有时(并非总是)服务器正在初始化应用程序并初始化NHibernate时,出现以下错误:An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full。 错误发生在这一行PessoaFisica user = InstitutoDaDorMVC.Helpers.LoginHelper.GetUsuarioLogado(User.Identity.Name);,这是NHibernate在服务器中初始化的行。初始化NHibernate时服务器上的套接字错误

这是我如何配置NHibernate的:

cfg = new Configuration() 
    .SetProperty(NHibernate.Cfg.Environment.Dialect, "NHibernate.Dialect.MySQLDialect") 
    .SetProperty(NHibernate.Cfg.Environment.ConnectionDriver, "NHibernate.Driver.MySqlDataDriver") 
    .SetProperty(NHibernate.Cfg.Environment.ConnectionString, ConnString) 
    .SetProperty(NHibernate.Cfg.Environment.ConnectionProvider, "NHibernate.Connection.DriverConnectionProvider") 
    .AddAssembly("InstitutoDaDorMVC"); 
sessionFactory = cfg.BuildSessionFactory(); 

,然后我有一个方法获取会话:

public static ISession GetSession() 
    { 
     ISession currentSession = null; 
     currentSession = sessionFactory.OpenSession(); 

     return currentSession; 
    } 

我不知道这是真的,如果我的应用程序的错误或由于内存限制,这是服务器错误,因为它不会在我的计算机中发生,而且有时只发生在服务器上。

回答

1

此问题与您的应用程序无关,基本上,如果您尝试从服务器中的端口数超过5000的端口设置TCP连接,则会发生此问题。

您可以设置TCP端口,服务器可以允许下列步骤的最大数量:

1.Open Registry Editor - 转到run - >regedit
2.Goto - >HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 3.Goto->Edit菜单上,单击New,然后添加以下注册表项:

Value Name: MaxUserPort 
Value Type: DWORD 
Value data: 65534 

立即重新启动服务器,并尝试运行应用程序。

查看此链接了解更多信息:An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full

相关问题