我有作为 Windows 服务运行的 ac# 应用程序。此应用程序使用开源微型 http 服务器进行 URL 通信。开发了一个 flext 应用程序,通过 c# 应用程序使用 get/post 方法从 sqlite 数据库中更新和选择数据。
我有一个名为 https:/domainname:portnumber/folder/tree/200 的 url,它在 ac# 服务的帮助下从数据库中读取数据,并以 xml 形式向客户端返回大量数据。
有时,当此 url 被调用时,totral c# windows 服务正在重新启动。然后需要刷新 flext 应用程序才能再次启动它。安装windows服务的服务器防火墙关闭,机器也可达。
当我检查此 url 调用后发现的日志时,服务器重新启动。另外,当我检查提琴手的流量时,我收到以下错误:
HTTP/1.1 502 Fiddler - Connection Failed
Content-Type: text/html; charset=UTF-8
Connection: close
Timestamp: 10:18:52.685
[Fiddler] The socket connection to (domainname) failed. <br />ErrorCode: 10061.
用于调用此文件夹/树的代码如下
public string Tree()
{
try
{
string langstr = "";
if (Request.QueryString["lang"] != null && !string.IsNullOrEmpty(Request.QueryString["lang"].Value))
{
langstr = Request.QueryString["lang"].Value.ToString();
}
else
{
ThingzDatabase db = SessionDatabase;
langstr = db.DefaultLanguage;
db = null;
}
folderTree = new FolderTree(Convert.ToInt32(Id), true, SessionDatabase, langstr);
XmlDocument doc = folderTree.XML;
Response.ContentType = ContentType.Xml;
langstr = null;
folderTree.db2 = null;
folderTree = null;
//GC.Collect();
return doc.InnerXml;
}
catch (Exception e)
{
TouchServer.Log(Logger.MessageType.Error, 1, e.ToString());
return "Get folder tree failed, reason:" + e.Message;
}
}
要从 sqlite 数据库执行查询,请使用以下代码
public SQLiteDataReader ExecuteSQL(String sqlExpr)
{
if (conn.State != ConnectionState.Open
Open(DataFile);
using (SQLiteCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sqlExpr + ";PRAGMA read_uncommitted = 1;";
cmd.CommandType = CommandType.Text;
return cmd.ExecuteReader();
}
}