"Odmowa dostępu" to oczekiwane zachowanie, z uwagi na to, co próbujesz zrobić. Pozwól mi wyjaśnić.
Po utworzeniu instancji zadania zegara jest ona przechowywana w bazie danych konfiguracji farmy. Uzyskiwanie dostępu do tej bazy danych w celu zapisu jest uprzywilejowaną operacją; z reguły tylko konto konta usługi rolniczej (to znaczy konto, na którym uruchamiany jest OWSTIMER.EXE) lub konta, które wyraźnie mają uprawnienia wymagane do przeprowadzenia takiej operacji w bazie danych konfiguracji (zazwyczaj administratorach), zakończy się pomyślnie.
Domyślnie próba utworzenia zadania czasomierza z poziomu kontekstu zbioru witryn kończy się niepowodzeniem. Próba wykonania operacji w bloku podwyższonych uprawnień (za pośrednictwem SPSecurity.RunWithElevatedPrivileges) spowoduje, że zamiast kontekstu bieżącego użytkownika zostanie użyty kontekst konta aplikacji aplikacji WWW; to się powiedzie, jeśli konto puli aplikacji ma prawa do zapisu w bazie danych konfiguracji farmy. Jeśli tak się dzieje, jest to zazwyczaj spowodowane tym, że (a) konto usługi rolniczej jest używane w rolach, w których nie powinno być (na przykład uruchamianie aplikacji sieci Web z treścią) lub (b) dodatkowe uprawnienia zostały przyznane puli aplikacji konto. Oba przypadki przedstawiają odchylenie od modelu operacyjnego opartego na najlepszych praktykach.
Instancje zadania czasomierza są zwykle tworzone w momencie aktywacji funkcji w funkcjach z zakresem na poziomie farmy lub aplikacji sieciowej. Czemu? Ponieważ te funkcje są zazwyczaj aktywowane przez administratorów z poziomu wiersza poleceń (zakładając, że administrator ma również prawa w konfiguracji farmy) lub z poziomu administracji centralnej (gdzie aktywacja odbywa się za pośrednictwem konta usługi farmy - gwarantowane jest posiadanie uprawnień do bazy danych konfiguracji). Po włączeniu funkcji i wywołaniu metody FeatureActivated SPFeatureReceiver jest bezpieczne (z punktu widzenia bezpieczeństwa) ustawienie zadania timera.
Prawidłowe rozwiązanie konkretnego problemu będzie wymagało nieco odwrócenia problemu na głowie. Zamiast próbować utworzyć zadanie czasomierza z poziomu zbioru witryn na żądanie, zaleciłbym ustawienie równoważnego zadania zliczania "wymiata" w momencie aktywowania funkcji. To prawda, że wymaga to więcej planowania i wysiłku, niż to, co próbujesz zrobić, ale twoja obecna ścieżka będzie działać tylko wtedy, gdy bezpieczeństwo zostanie dostosowane - i nie jest to zalecane.
Kiedy składałem razem funkcję BLU farmy pamięci podręcznej BLOB (http://blobcachefarmflush.codeplex.com), musiałem zrobić to samo.Możesz zobaczyć szczegóły, jak pracowałem przy tworzeniu zleceń czasowych w klasie FeatureReceiver (BlobCacheFarmFlushSweepJobFeatureReceiver). Reszta kodu i związana z nim dokumentacja mogą również pomóc w niektórych innych pojawiających się wyzwaniach.
Zapraszam do korzystania z tego, co można znaleźć w dowolny sposób; właśnie dlatego tam jest!
Mam nadzieję, że to pomaga. Jeśli pojawią się dalsze pytania, odpal, a ja odpowiem najlepiej jak potrafię :-)
Hey Sean Dziękuję za odpowiedź ..... Znalazłem to bardzo przydatne. Na pewno zadaję pytania, czy będę miał ... Thanx ponownie – Anoop
Jak skonfigurować i uruchomić tę pracę? – Evgeny
Jestem administratorem na moim komputerze. – Evgeny