我有一个C#控制台应用程序,它是作为Windows服务在现场机器安装的。此应用程序充当服务器并使用http和https服务。与客户端URLS的Tiny HTTP服务器开放源码通信使用。有90个客户端使用使用flex开发的客户端程序访问服务器中的数据。这个Flex应用程序连接到服务器,如下,
登录网址
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;
--------
项目/详细网址,如http:\域名:端口\项目\详细\ 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服务将数据更新/写入服务器数据库。 相同的登录网址调用和其他post和get方法将在管理员登录中调用。
服务器中使用的数据库是sqlite。现在让我解释我的问题, 我收到客户的投诉,称服务器被吊死,管理员无法登录。或者,如果登录无法尽快上传任何图像,则任何数据库更新都会执行,服务器将挂起。所以需要重新启动Windows服务。
当管理员对服务器数据库执行CRUD操作时。与此同时,客户端应用程序(flex)应用程序也尝试从服务器获取数据。该URL每5分钟从客户端应用程序调用一次。
可能是什么问题,我该如何解决这个服务器的问题。这是一个读取或写入问题的SQLite数据库。 请帮助我提出宝贵的建议。
问候 桑杰塔
您可能需要添加一些跟踪和/或记录到服务器应用程序。这应该会提供更多关于错误发生的信息。 – 2013-05-10 16:13:10
问题几乎肯定与您的锁定代码有关;如果您不小心将锁定区域最小化并正确释放它们,则很容易导致服务器死锁。 – EricLaw 2013-05-10 16:38:30
@Sangeetha。当你说服务器挂起时,你的意思是说windows服务已经停止,或者它仍在运行但是没有响应? – 2013-05-11 21:08:15