0

ご挨拶!

ライブ マシンに Windows サービスとしてインストールされている ac# コンソール アプリケーションがあります。このアプリケーションはサーバーとして機能し、http および https サービスを使用します。クライアントの URL と通信するには、オープン ソースの Tiny HTTP サーバーが使用されます。flex を使用して開発されたクライアント プログラムを使用して、サーバーからデータにアクセスするクライアントが 90 あります。この 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;

                             --------

http:\domainname:port\item\detail\temid のようなアイテム/詳細の URL 1 つのクライアントが約 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サービスを使用してサーバーデータベースにデータを更新/書き込む管理者が1人います。同じログイン URL 呼び出しと他の post および get メソッドが管理者ログインで呼び出されます。

サーバーで使用されるデータベースは sqlite です。ここで私の問題を説明しましょう。クライアントから、サーバーがハングし、管理者がログインできないという苦情を受け取りました。または、データベースへの更新が実行されるとすぐにログインして画像をアップロードできない場合、サーバーがハングします。そのため、Windows サービスを再起動する必要があります。

管理者がサーバー db に対して CRUD 操作を実行するとき。同時に、クライアント アプリケーション (フレックス) アプリケーションもサーバーからデータを取得しようとします。この URL は、クライアント アプリケーションから 5 分ごとに 1 回呼び出されます。

何が問題で、どうすればこのサーバーハンドを解決できますか. それはsqlite dbへの読み取りまたは書き込みの問題ですか。貴重な提案で私を助けてください。

よろしくサンギータ

4

1 に答える 1

0

解決策は、ASP.NET Web ロール/メンバーシップ関数をその DB CRUD 操作から分離することです。後者は、独自の自律型セキュリティ モデルを実装するか、ロール/メンバーシップ クラスからの入力を使用する必要があります。

于 2013-05-10T15:53:56.420 に答える