NopCommerce 3.8を使用しています。NopCommerceタスクプラグインがタスクを開始しない
私は新しいMiscプラグインを作成しました。その目的は、データ用に私のWeb APIを黙って呼び出すタスクを実行することです。
以下が私のコードである:
プラグインクラス
public class MereSyncPlugin : BasePlugin, IMiscPlugin
{
private MereSyncObjectContext _context;
private IScheduleTaskService _schedualTaskService;
public MereSyncPlugin(MereSyncObjectContext context, IScheduleTaskService schedualTaskService)
{
_context = context;
_schedualTaskService = schedualTaskService;
}
public void GetConfigurationRoute(out string actionName, out string controllerName, out RouteValueDictionary routeValues)
{
actionName = "";
controllerName = "";
routeValues = new RouteValueDictionary()
{
{ "Namespaces", "Nop.plugin.Misc.MereSync.Controllers" },
{ "area", null }
};
}
public override void Install()
{
//TODO: add more
_schedualTaskService.InsertTask(new Nop.Core.Domain.Tasks.ScheduleTask()
{
Enabled = true,
Name = "Product Sync",
Seconds = 3600,
StopOnError = false,
Type = "Nop.Plugin.Misc.MereSync.ProductSyncTask, Nop.Plugin.Misc.MereSync"
});
//_context.Install();
base.Install();
}
public override void Uninstall()
{
Nop.Core.Domain.Tasks.ScheduleTask task = _schedualTaskService.GetTaskByType("Nop.Plugin.Misc.MereSync.ProductSyncTask, Nop.Plugin.Misc.MereSync");
if (task != null)
_schedualTaskService.DeleteTask(task);
//_context.Uninstall();
base.Uninstall();
}
}
オブジェクトコンテキストクラス(この時点で設定されていないがので、いくつかの部分をコメントアウト)
public class MereSyncObjectContext : DbContext, IDbContext
{
public bool ProxyCreationEnabled
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public bool AutoDetectChangesEnabled
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public MereSyncObjectContext(string nameOrConnectionString) : base(nameOrConnectionString)
{
}
/*protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//TODO: insert ALL model MAPPINGS!!!!
//modelBuilder.Configurations.Add(new insertnewmap());
base.OnModelCreating(modelBuilder);
}*/
public string CreateDatabaseInstallationScript()
{
return ((IObjectContextAdapter)this).ObjectContext.CreateDatabaseScript();
}
public void Install()
{
Database.SetInitializer<MereSyncObjectContext>(null);
Database.ExecuteSqlCommand(CreateDatabaseInstallationScript());
SaveChanges();
}
public void Uninstall()
{
//this.DropPluginTable("MereSys_TableName");
}
IDbSet<TEntity> IDbContext.Set<TEntity>()
{
return base.Set<TEntity>();
}
public IList<TEntity> ExecuteStoredProcedureList<TEntity>(string commandText, params object[] parameters) where TEntity : BaseEntity, new()
{
throw new NotImplementedException();
}
public IEnumerable<TElement> SqlQuery<TElement>(string sql, params object[] parameters)
{
throw new NotImplementedException();
}
public int ExecuteSqlCommand(string sql, bool doNotEnsureTransaction = false, int? timeout = default(int?), params object[] parameters)
{
throw new NotImplementedException();
}
public void Detach(object entity)
{
throw new NotImplementedException();
}
}
タスククラス
public class ProductSyncTask : ITask
{
private readonly ILogger _logger;
public ProductSyncTask(ILogger logger)
{
this._logger = logger;
}
public async void Execute()
{
//TODO: Call My method, USE BEST PRACTICE, IoC DI
//throw new NotImplementedException();
_logger.InsertLog(Nop.Core.Domain.Logging.LogLevel.Information, "Start", "Product sync has started");
ProductSyncService test = new ProductSyncService();
await test.GetProductsAsync();
}
}
質問
私はログファイルにNopcommerceバックエンドに移動し
管理エリア>システム>私は私のログなステートメントを参照することが期待
を記録そこには何も表示されません。
私はまた、タスクのschedualステータスをチェックします。これは決して開始しませんでした。ブレークポイントは、デバッグモードのタスククラスにも設定され、決してヒットしません。
ここに何か不足していますか?私のインパネレーションは正しいのですか?
注:
私は、非同期呼び出しを削除しているが、それは(そのクラスのレベルに達したことがないとして)何もしませんでした。掃除して再構築し、該当する場合はコピーローカル偽を設定します。 プラグインがインストールされています。マシン上のイベントビューアは、ノーコマールに関する警告やエラーを表示しません。 「今すぐ実行」ボタンを押すとページがリフレッシュされますが、指示タスクは実行されず、クラス・ブレークポイントはデバッグ・モードでヒットしません。
ソースファイル Source
プラグインは、イムは、これまでの流れのその段階になっていないとして、最もすなわち、残りのクライアントなどの冗長化に使用されていない、これまでの私のコードが含まれています。
プラグインがインストールされていることを確認してください。ここには記載されていません。 –
編集された投稿、今すぐプラグインがインストールされていると言われました – lemunk
小修正: 'Type =" Nop.Plugin.Misc.MereSync.ProductSyncTask、... "'は 'Type ="でなければなりませんNop.Plugin.Misc.MereSync.ProductSyncTask、Nop .Plugin.Misc.MereSync.MereSyncPlugin "を実行します。修正やチェックをしてください! –