这是我的第一个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的方式:
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;
}
我想知道它是否真的是我的应用程序错误,或者是由于内存限制导致的服务器错误,因为它在我的计算机中不会发生,并且有时会发生在服务器上。
答案 0 :(得分:1)
此问题与您的应用程序无关,如果您尝试从服务器中大于5000的端口设置TCP连接,则会发生此问题。
您可以按照以下步骤设置服务器可以允许的最大TCP端口数:
1.打开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