序文
企業は、オフサイトのバックアップ、ディザスタリカバリサーバなので、地元のバークラウドへのデータベース・サーバまで定期的にする必要性を増やす必要があります
一番上の棚
netcoreインストールサービスメソッドの勝利のマシンはTopshelf使用中の唯一の企業は現在、ここで、レコードがたくさんあります
PM>インストール・パッケージTopshelf
試運転段階のスタートアップファイルのプログラムIは、サービスをインストールされていません。
静的な無効メイン(文字列[] args) { Console.WriteLineを( "自动备份云服务器数据库!"); VAR isService =(Debugger.IsAttached || args.Contains( " -コンソール"))!。 // VARビルダー= CreateWebHostBuilder(!。args.Where)(引数=>引数= "--console"てToArray()); VARの設定=新しいConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile( "研究会/ appsettings.json"、オプション:真、reloadOnChange:真) .Build(); IF(isService) { HostFactory.Run(X => { x.Service < x.RunAsLocalSystem(); x.SetDescription( "自动备份"); x.SetDisplayName( "自动备份"); x.SetServiceName( "自动备份"); x.EnablePauseAndContinue(); }); } 他 { // ILoggerRepositoryリポジトリ= LogManager.CreateRepository( "NETCoreRepository")。 //XmlConfigurator.Configure(repository、新FileInfo(Directory.GetCurrentDirectory()+ "\\カンファレンス\\ log4net.config")); CreateHostBuilder(引数).Build()を実行します()。 } }
IWebhostスタートアップ上昇注入と使用
IServiceCollection => services.AddDispatch(); IApplicationBuilder => UseDispatch();
スタート
実行アドレスは、同じアドレスに反射し、XML設定仕事です
すぐにそれを実行してみてください
私の仕事コード
パブリッククラスBakJob:IJob { パブリックタスク実行(IJobExecutionContextコンテキスト) { VAR BASEURL = "HTTP:// {你的服务器} /xxx/xxx.zip"。 新しいWebクライアント{} .DownloadFile(BASEURL、 "bak.zip")。 Task.CompletedTaskを返します。 } }
OK
だから私はどのように対処するこのジョブを注入したいです
ここでの名前を変更するには何のファイル名のURLアドレスと他の構成例を再定義するために、構成ファイルを使用します
public class BakJob : IJob { public TestBakConfig testBakConfig; public BakJob(IOptions<TestBakConfig> options) { testBakConfig = options.Value; } public Task Execute(IJobExecutionContext context) { var BaseUrl = "http://xxx/xx/xx"; new WebClient { }.DownloadFile(BaseUrl, testBakConfig.FullName+".zip"); return Task.CompletedTask; } }
注:Job 必须 需要先注入工厂才能使用注入的 我这边 WooDispatch 替我处理了
OK