0

このアプリケーションをインストールしましたが、問題はこのアプリケーションが config.ini ファイルを読み取らないことです。config.ini が存在しないというエラーが発生しました。Setup Project に config.ini ファイルを追加する方法がわかりません。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;
using System.Net.NetworkInformation;
using System.IO;

namespace MovimentoServic
{
    public partial class Service1 : ServiceBase
    {
        Dictionary<string, string> vpN = new Dictionary<string, string>();
        cancelaments cancel = new cancelaments();
        vendas vendas = new vendas();
        Vendaecf ecf = new Vendaecf();
        Sangrias sangria = new Sangrias();
        Devolucao devolucao = new Devolucao();
        CancelamentECF cancelecf = new CancelamentECF();
        EnviarItemparalojas enivar = new EnviarItemparalojas();
        RecheckVendas recheck = new RecheckVendas();

        String vpn = null;
        String host = null;
        string user = null;
        string pass = null;
        string mysql_db = null;
        string vpn_db = null;
        String permissao = null;
        int count = 0;

        public void conect()
        {
            if ( System.IO.File.Exists("config.ini") )
            {
                String[] INI = System.IO.File.ReadAllLines("config.ini");

                for ( int i = 0; i < INI.Length; i++ )
                {
                    if ( INI[i].StartsWith("HOST") )
                    {
                        host = INI[i].Substring(INI[i].IndexOf("=") + 1);
                    }
                    if ( INI[i].StartsWith("USER") )
                    {
                        user = INI[i].Substring(INI[i].IndexOf("=") + 1);
                    }
                    if ( INI[i].StartsWith("PASS") )
                    {
                        pass = INI[i].Substring(INI[i].IndexOf("=") + 1);
                    }
                    if ( INI[i].StartsWith("DBPATH") )
                    {
                        mysql_db = INI[i].Substring(INI[i].IndexOf("=") + 1);
                    }

                    if ( INI[i].StartsWith("VPN") )
                    {
                        vpn = (INI[i].Substring(INI[i].IndexOf("=") + 1));
                        Char[] cs = { ';' };
                        String[] VPN = vpn.Split(cs);
                        vpN.Add(VPN[0], VPN[1]);
                    }
                    if ( INI[i].StartsWith("DBPATH_VPN") )
                    {
                        vpn_db = (INI[i].Substring(INI[i].IndexOf("=") + 1));
                    }
                    if ( INI[i].StartsWith("Permissao") )
                    {
                        permissao = (INI[i].Substring(INI[i].IndexOf("=") + 1));
                    }

                }
            }

        }
        public static bool IsAlive( string aIP, String shop )
        {
            bool result = false;
            Ping pingSender = new Ping();
            PingOptions options = new PingOptions();
            options.DontFragment = true;
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 10;
            PingReply reply = pingSender.Send(aIP, timeout, buffer, options);
            if ( reply.Status == IPStatus.Success )
            {
                result = true;
            }
            return result;
        }


        long Validtime = 50;
        int tk = 0;
        private void timer1_Elapsed( object sender, EventArgs e )
        {
            tk++;
            if ( tk == Validtime )
            {
               // Workout();
                tk = 0;
            }

        }
        public Service1()
        {
            InitializeComponent();

        }

        protected override void OnStart( string[] args )
        {
            conect();

            Timer timer1 = new Timer();
            timer1.Interval = 100;
            timer1.Start();
            timer1.Elapsed += new ElapsedEventHandler(timer1_Elapsed);

        }

        protected override void OnStop()
        {
        }
    }
}
4

2 に答える 2

0

ファイルの代わりに、バージョン 2.0 以降の .NET Framework に組み込まれている設定メカニズムを使用しconfig.iniます。

これを行うには、プロジェクトのプロパティを開き、Settingsタブに移動します。必要な設定を追加します (ファイルが作成されていることに注意してください。このapp.configファイルは、コンパイル時に として出力フォルダーにコピーされます<projectname>.exe.config)。プログラムでは、次のような設定を使用します

string myStringSetting = Properties.Settings.Default.MySetting

サービスをインストールした後、exe.configファイルを変更すると、再起動後にサービスが新しい設定を使用するようになります。

于 2012-09-03T12:52:31.357 に答える
0

あなたの問題は、ini ファイルの場所とサービスの起動方法について想定しているためです。

サービスでは、現在の作業ディレクトリが毎回同じ場所にあることに依存することはできません。構成ファイルへのパスをレジストリに保存する必要があります (または、最初に構成データをレジストリに保存することもできます)。

于 2012-09-03T14:07:31.913 に答える