初始化NHibernate时服务器上的套接字错误

时间:2013-11-14 16:55:15

标签: c# sockets asp.net-mvc-4 nhibernate

这是我的第一个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;
    }

我想知道它是否真的是我的应用程序错误,或者是由于内存限制导致的服务器错误,因为它在我的计算机中不会发生,并且有时会发生在服务器上。

1 个答案:

答案 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