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 的方式:

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;
    }

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

4

1 回答 1

1

此问题与您的应用程序无关,基本上,如果您尝试从服务器中大于 5000 的端口建立 TCP 连接,就会发生此问题。

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

1.打开-goto 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

现在重新启动服务器并尝试运行您的应用程序。

有关更多信息,请参阅此链接:无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满

于 2013-11-14T17:47:48.313 回答