Hành vi "Truy cập bị từ chối" là hành vi được mong đợi cho những gì bạn đang cố gắng thực hiện. Cho phép tôi giải thích.
Khi một cá thể công việc hẹn giờ được tạo, nó được lưu giữ trong cơ sở dữ liệu cấu hình trang trại. Việc truy cập cơ sở dữ liệu này cho các mục đích ghi là một hoạt động đặc quyền; theo quy tắc, chỉ tài khoản dịch vụ trang trại (nghĩa là tài khoản mà OWSTIMER.EXE thực hiện) hoặc tài khoản rõ ràng có các quyền cần thiết để thực hiện thao tác trên cơ sở dữ liệu cấu hình (thường là quản trị viên) sẽ thành công.
Theo mặc định, việc cố gắng thực hiện công việc hẹn giờ từ bên trong ngữ cảnh tập hợp trang web sẽ không thành công. Cố gắng hoạt động trong một khối đặc quyền nâng cao (thông qua SPSecurity.RunWithElevatedPrivileges) sẽ chỉ dẫn đến ngữ cảnh tài khoản của ứng dụng web của ứng dụng web đang được sử dụng thay cho bối cảnh người dùng hiện tại; điều này chỉ thành công nếu tài khoản hồ bơi ứng dụng có quyền ghi vào cơ sở dữ liệu cấu hình trang trại. Nếu điều này xảy ra, thường là vì (a) tài khoản dịch vụ trang trại đang được sử dụng trong các vai trò mà nó không nên ở (để chạy các ứng dụng web nội dung), hoặc (b) các quyền bổ sung đã được cấp cho nhóm ứng dụng tài khoản. Cả hai trường hợp đều thể hiện độ lệch so với mô hình hoạt động tốt nhất.
Trường hợp công việc hẹn giờ thường được tạo tại thời gian kích hoạt tính năng trong các tính năng được phạm vi ở cấp độ Farm hoặc WebApplication. Tại sao? Bởi vì các tính năng này thường được kích hoạt bởi các quản trị viên từ dòng lệnh (giả sử quản trị viên cũng có quyền trong cơ sở dữ liệu cấu hình trang trại) hoặc từ bên trong Trung tâm quản trị (nơi kích hoạt xảy ra thông qua tài khoản dịch vụ trang trại - được bảo đảm có quyền đối với cơ sở dữ liệu cấu hình). Khi tính năng được kích hoạt và phương thức FeatureActivated của SPFeatureReceiver được gọi, nó là an toàn (từ quan điểm bảo mật) để thiết lập công việc hẹn giờ.
Giải quyết vấn đề cụ thể của bạn đúng cách sẽ liên quan đến việc biến vấn đề trên đầu một chút. Thay vì cố gắng khởi tạo công việc hẹn giờ từ bộ sưu tập trang web theo yêu cầu, tôi khuyên bạn nên thiết lập tương đương với công việc hẹn giờ "quét" tại thời điểm tính năng của bạn được kích hoạt. Phải thừa nhận rằng, điều này cần nhiều kế hoạch và nỗ lực hơn những gì bạn đang cố gắng làm, nhưng con đường hiện tại của bạn sẽ chỉ hoạt động nếu bảo mật được điều chỉnh bằng cách nào đó - và điều đó không được khuyến khích.
Khi tôi kết hợp tính năng xóa trang trại bộ nhớ cache BLOB của mình (http://blobcachefarmflush.codeplex.com), tôi phải tự làm điều tương tự.Bạn có thể xem các chi tiết cụ thể về cách tôi đã làm việc thông qua tạo công việc hẹn giờ trong lớp FeatureReceiver (BlobCacheFarmFlushSweepJobFeatureReceiver). Phần còn lại của mã và tài liệu liên quan cũng có thể giúp bạn giải quyết một số thách thức khác.
Hãy sử dụng những gì bạn tìm thấy theo bất kỳ cách nào; đó là lý do tại sao nó ở đó!
Tôi hy vọng điều đó sẽ hữu ích. Nếu có các câu hỏi tiếp theo, hãy sa thải và tôi sẽ trả lời tốt nhất có thể :-)
Nguồn
2009-06-24 13:53:20
Hey Sean Thanx cho câu trả lời của bạn ..... Tôi thấy nó rất hữu ích. Tôi chắc chắn sẽ hỏi truy vấn nếu tôi sẽ có .... Thanx một lần nữa – Anoop
Làm thế nào để cấu hình và chạy công việc này sau đó? – Evgeny
Tôi là quản trị viên trên máy tính của tôi. – Evgeny