1

5秒ごとに実行するようにタスクを構成しようとしています(本番環境では、頻度は30分に設定されますが、デバッグのために5秒に設定します)。

<scheduling>
  <!-- Time between checking for scheduled tasks waiting to execute -->
  <frequency>00:00:10</frequency>
....
<agent type="MyStuff.Sitecore.Tasks.UpdateJob" method="Run" interval="00:00:05">
        <LogActivity>true</LogActivity>
      </agent>

私のクラスは次のようになります。

namespace MyStuff.Sitecore.Tasks
{
    public class UpdateJob
    {
       public void Run()
       {
          //debugger never enters here
       }
    }
}

しかし、何があっても、コードが呼び出されているようには見えません。他のWebページにアクセスしてみたので、asp.netワーカープロセスが有効であることがわかりました。

クラスはWebサイトプロジェクトで呼び出される共有ライブラリにあるため、サイトコア構成がMyStuff.Sitecore.Tasks.UpdateJobタイプを探している場合は、それを見つけることができるはずです。また、Sitecoreログをチェックインしましたが、タスクに関するエラーなどは表示されません。

私が欠けているものはありますか?


ログに表示されている「疑わしい」ものは次のとおりです。

ManagedPoolThread #12 15:53:10 INFO  Starting update of index for the database 'master' (1 pending).
ManagedPoolThread #12 15:53:10 INFO  Update of index for the database 'master' done.
ManagedPoolThread #18 15:53:36 ERROR Exception in geoip worker thread.
Exception: System.Reflection.TargetInvocationException
Message: Exception has been thrown by the target of an invocation.
Source: mscorlib
   at System.RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method, Object[] args, SignatureStruct& signature, RuntimeType declaringType)
   at System.RuntimeMethodHandle.InvokeConstructor(IRuntimeMethodInfo method, Object[] args, SignatureStruct signature, RuntimeType declaringType)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Sitecore.Reflection.ReflectionUtil.CreateObject(Type type, Object[] parameters)
   at Sitecore.Configuration.Factory.CreateFromTypeName(XmlNode configNode, String[] parameters, Boolean assert)
   at Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
   at Sitecore.Configuration.Factory.GetProviders[TProvider,TCollection](List`1 nodes)
   at Sitecore.Configuration.Factory.GetProviders[TProvider,TCollection](String rootPath, TProvider& defaultProvider)
   at Sitecore.Configuration.ProviderHelper`2.ReadProviders()
   at Sitecore.Configuration.ProviderHelper`2.get_Provider()
   at Sitecore.Analytics.Lookups.GeoIpWorker.ProcessGeoIp()
   at Sitecore.Analytics.Lookups.GeoIpWorker.<Wakeup>b__3(Object a)

Sitecore6.5を使用しています

4

3 に答える 3

3

エージェント宣言を<agent type="Mystuff.Sitecore.Tasks.UpdateJob, Mystuff" method="Run" interval="00:00:05">、Mystuffがアセンブリ名である場所に更新してみてください。アセンブリが欠落しているようです。

techphoria414の提案に基づいて回答として追加されました。

于 2012-05-08T02:45:15.247 に答える
0

私はあなたの質問を少し回避していますが、スケジュールされたタスクの作業中にデバッガーを呼び出すことに成功したことはありません。代わりにSitecore.Diagnostics.Log、表示しようとしている関連するデバッグ レベルを使用しました。多くの場合、これはかなり制限的であることがわかりましたが、サードパーティのテールユーティリティを使用すると、発生したログをかなり簡単に監視できます.

たぶん、他の誰かが答えるまで、これは暫定的な解決策を提供します。

于 2012-05-04T13:04:42.060 に答える
0

答えは にあります<frequency>00:00:10</frequency>。これは常に、最も頻繁に行うタスクと同じくらい低くする必要があるため、この場合は 00:00:05 です。

于 2012-05-04T17:53:31.053 に答える