문제

나는 단지 1 개의 Visual Studio 프로젝트가 있습니다.

DocumentLibrary 및 다중 WebParts 1 EventReceiver가 있습니다. 프로젝트의 feature.xml 파일의 Scope= 사이트를 정의했습니다.

IVERRECEIVER에서 1 개의 사용자 정의 기능을 만들었습니다. 모든 이벤트가 내 문서 라이브러리에 추가 / 업데이트 / 삭제됩니다.

프로젝트에서 오른쪽에 올바르게 배치 할 때 모든 것이 잘 작동하지만 모든 페이지를 만들 때 또는 모든 항목이 내 모든 사용자 정의 목록에 추가 될 때 eventReceiver도 화재가됩니다.DocumentLibrary에서 생성되지만. 그것의 오류가 없지만 다시 전화를 걸고 싶지 만 다시 전화를 걸고 싶습니다.

그러나 F5에 의해 프로젝트를 디버깅 할 때 eventReceiver에서 오류가 발생했습니다.

EventReceiver의 Scope= Web을 배포하는 경우 문제를 해결할 수 있지만 Scope= Site와 함께 웹 파트를 배포해야합니다.

싱글 배포 로이 문제를 해결하는 방법

도움이 되었습니까?

해결책

두 번째 기능을 프로젝트에 추가 할 수 있습니다.이 경우 두 개의 기능이있는 솔루션 패키지가 하나의 기능을 갖추고 있습니다 (첫 번째 사이트 범위 기능, 두 번째 웹 범위 기능은 웹 범위 기능입니다).사이트 범위 기능에서 웹 파트를 포함 할 수 있습니다.이를 수행하려면 기능 폴더를 클릭하고 새 기능 추가 옵션을 선택해야합니다.

다른 팁

이벤트 리시버를 사용자 정의 목록을 사용할 수있는 문서 라이브러리 템플리트에 묶여있는 의심스럽게도 이벤트 수신자가 두 목록 인스턴스 모두에 바인딩됩니다.

이벤트 수신기를 특정 목록에 바인딩 해야하는 경우 일반적으로 피쳐 활성화 및 CODD를 통해 코드에서 다음과 같이 코드에서 다음과 같이합니다.

    protected static void AddEventReceiverToList(string name, string className, SPList list, string assemblyName, SPEventReceiverType eventReceiverType, SPEventReceiverSynchronization eventReceiverSynchronization)
    {
        if (name == null) throw new ArgumentNullException("name");
        if (className == null) throw new ArgumentNullException("className");
        if (list == null) throw new ArgumentNullException("list");
        if (assemblyName == null) throw new ArgumentNullException("assemblyName");
        SPEventReceiverDefinitionCollection eventReceiverDefinitionCollection = list.EventReceivers;

        foreach (SPEventReceiverDefinition eventReceiverDefinition in eventReceiverDefinitionCollection)
        {
            if (eventReceiverDefinition.Name == name)
            {
                return;
            }
        }

        SPEventReceiverDefinition eventReceiver = eventReceiverDefinitionCollection.Add();
        eventReceiver.Name = name;
        eventReceiver.Synchronization = eventReceiverSynchronization;
        eventReceiver.Type = eventReceiverType;
        eventReceiver.Assembly = assemblyName;
        eventReceiver.Class = className;
        eventReceiver.Update();
    }
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top