0

機能が有効になったときに追加されるカスタム タイマー ジョブを作成しました。この機能は例外なく有効になります。しかし、タイマー ジョブは、Central Admin のタイマー ジョブ定義にリストされていません。

同じことがステージングサーバーで機能していますが、プロダクションサーバーでこれに直面しています。

私はSharepoint2007に取り組んでいます。

以下は、Feature Activatedで行ったことです。

public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            try
            {
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    SPWeb parentWeb = properties.Feature.Parent as SPWeb;
                    UpdateEmpReferralListTimer taskJob;
                    SPMinuteSchedule schedule;
                    foreach (SPJobDefinition job in parentWeb.Site.WebApplication.JobDefinitions)
                    {

                        if (job.Name == "xyz")
                            job.Delete();
                    }
                    parentWeb = properties.Feature.Parent as SPWeb;
                    taskJob = new UpdateEmpReferralListTimer("xyz", parentWeb.Site.WebApplication);
                    schedule = new SPMinuteSchedule();
                    schedule.BeginSecond = 0;
                    schedule.EndSecond = 59;
                    taskJob.Schedule = schedule;
                    taskJob.Update();

                });
            }
            catch (Exception Ex)
            {
                string str = Ex.Message.ToString();
            }
        }

機能範囲は「Web」

4

2 に答える 2

0

私の知る限り、SharePoint アカウントが適切に設定されている場合、管理者特権を必要とするタスク (タイマー ジョブの作成など) を実行しようとしても、サイト レベルの機能アクティベーション コールバックからは機能しないはずです。Web サイトを通常実行するアカウントには、管理者権限がありません。

すべてのアカウントが同じ権限を持つため、ステージング サーバーで機能する可能性があります。運用サーバーの SharePoint ログをチェックして、例外が何であるかを確認します (再スロー/報告せずに例外を処理するコードを削除した後catch (Exception Ex) {...})。

于 2012-06-18T17:21:51.703 に答える
0

機能がエラーなしでアクティブ化されていることをどうやって知ることができますか? コードに try/catch ブロックがあり、catch ブロックで何もしていません。コードがエラーをスローした場合、catch ブロックはそれを抑制します。この行を catch ブロックに追加して、sharepoint ログを確認してください。

Microsoft.SharePoint.Administration.SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("開発デバッグ", TraceSeverity.Unexpected, EventSeverity.Information), TraceSeverity.Unexpected, str, null);

ログ ファイルは C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\LOGS フォルダーにあります。

于 2012-08-01T05:20:25.250 に答える