Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多客户端连接时,C#服务器程序挂起_C#_Sqlite_Http_Https - Fatal编程技术网

多客户端连接时,C#服务器程序挂起

多客户端连接时,C#服务器程序挂起,c#,sqlite,http,https,C#,Sqlite,Http,Https,你好 我有一个c#控制台应用程序,它作为windows服务安装在live machine中。此应用程序充当服务器并使用http和https服务。为了与客户端URL的小型HTTP服务器进行通信,使用了开源。有90个客户端使用flex开发的客户端程序从服务器访问数据。此flex应用程序连接到服务器,如下所示 登录url try { if(!Request.Uri.AbsoluteUri.Contains("https")) System.Threading.Monitor.En

你好

我有一个c#控制台应用程序,它作为windows服务安装在live machine中。此应用程序充当服务器并使用http和https服务。为了与客户端URL的小型HTTP服务器进行通信,使用了开源。有90个客户端使用flex开发的客户端程序从服务器访问数据。此flex应用程序连接到服务器,如下所示

登录url

try
{
   if(!Request.Uri.AbsoluteUri.Contains("https"))
        System.Threading.Monitor.Enter(Lock);
   if (Request.Method == Method.Post)
   {
      SiteSession siteSession = _login( Request.Form["SiteName"].Value.Trim(),
                                        Request.Form["UserName"].Value.Trim(),
                                        Request.Form["Password"].Value.Trim());
      if (siteSession != null)
      {
           if (siteSession.authenticated)
           {
              User currentUser = siteSession.thingzDatabase.currentUser;
              _database = siteSession.thingzDatabase;

                             --------
项目/详细信息URL,如http:\domainname:port\item\detail\temid 一个客户端调用了近70个url,并从服务器数据库获取数据。因此总共有90多个客户端

调用项目/列表时,执行以下代码

if (Id == "")
{
   //System.Threading.Monitor.Enter(_locker);
   System.Threading.Monitor.Enter(Lock);
   try
   {
     if (Request.AcceptTypes == null)
     {

        TypeController.session_id = Request.QueryString["sessionid"].Value;

        //queue.   
        Enqueue(Request.QueryString["sessionid"].Value);

        //string que = "";

        ////do
        ////{
        //que = queue.Dequeue();
        //TypeController.session_id = que;

        langStr = SessionDatabase.Language;
        filter = new AllThingzFilter(SessionDatabase, parameters, langStr);

        TypeController.session_id = null;

        filter.Execute();
                                 --------
有一位管理员使用具有不同端口号的安全https服务更新/写入数据到服务器数据库。 相同的登录url调用和其他post和get方法将在admin login中调用

服务器中使用的数据库是sqlite。现在让我解释一下我的问题, 我收到客户投诉,说服务器被挂起,管理员无法登录。或者,如果登录无法在对数据库执行任何更新后立即上载任何图像,则服务器将挂起。因此需要重新启动windows服务

管理员对服务器数据库执行CRUD操作时。同时,客户端应用程序(flex)应用程序也尝试从服务器获取数据。此url每5分钟从客户端应用程序调用一次

可能是什么问题,我如何解决这个服务器手。这是sqlite db的读或写问题。 请帮我提一些有价值的建议

问候
Sangeetha

解决方案是将ASP.NET Web角色/成员资格函数与DB CRUD操作分开:后者应该实现自己的自主安全模型,或者使用来自角色/成员资格类的输入。

此项目中不包括ASP.NET应用程序。后端是c#,用于处理http请求和数据库。前端是flex application.c#一个控制台应用程序,作为windows服务安装在生产机器中。您可能需要向服务器应用程序添加一些跟踪和/或日志记录。这将为您提供有关错误发生位置的更多信息;如果不小心最小化锁定区域并正确释放它们,很容易使服务器死锁。@Sangeetha。当您说服务器挂起时,您的意思是windows服务已停止,还是它仍在运行但没有响应?是的,windows服务已停止