문제

내 사이트의 기존 목록에 원격 이벤트 수신기를 첨부 할 수 있으며 내 앱의 목록이 아닙니다.나는 이것을 발견 할 수 없기 때문에 나는 이것이 잠재적으로 'SharePoint를 상하게 할 것 "이라고 생각한다.

이 일을해야 할 필요가있는 경우, 샌드 박스 또는 농장 솔루션을 볼 필요가 있습니까?

티아

도움이 되었습니까?

해결책

실제로 사이트 컬렉션을 실제로 교차하는 것이기 때문에 호스트 웹의 목록에 원격 이벤트 수신기를 첨부 할 수 없습니다.

호스트 웹에서는 일반 이벤트 수신자를 배포 할 수 있습니다 (어셈블리에서 클래스를 타겟팅)하고 원격 이벤트 수신기는 실제 WCF의 URL을 대상으로 가져 오지 않고 호스트에서 존재하지 않을 것입니다.어쨌든 웹 :

<Url>~remoteAppUrl/RemoteEventReceiver1.svc</Url>
.

또는

<Url>http://apps.mydomain.com:36511/MyReR.svc</Url>
.

다른 팁

예, 가능합니다. 속성 속성을 아래에서 촬영하는 것처럼 속성 속성을 true로 변경하여 앱을 설치하는 동안 이벤트 수신기를 처리하십시오.

여기에 이미지 설명을 입력하십시오 >>

다음 코드를 작성하십시오

public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties)
        {
            SPRemoteEventResult result = new SPRemoteEventResult();

            switch (properties.EventType)
            {
                case SPRemoteEventType.AppInstalled:
                    HandleAppInstalled(properties);
                    break;
                case SPRemoteEventType.ItemAdded:
                    HandleItemAdded(properties);
                    break;
            }
            return result;
        }

        private void HandleAppInstalled(SPRemoteEventProperties properties)
        {
            using (ClientContext clientContext =
                      TokenHelper.CreateAppEventClientContext(properties, false))
            {
                if (clientContext != null)
                {
                    List myList = clientContext.Web.Lists.GetByTitle("Your List Name");
                    clientContext.Load(myList, p => p.EventReceivers);
                    clientContext.ExecuteQuery();
                    bool rerExists = false;

                    foreach (var rer in myList.EventReceivers)
                    {
                        if (rer.ReceiverName == "ItemAddedEvent")
                        {
                            rerExists = true;
                            System.Diagnostics.Trace.WriteLine("Found existing ItemAdded receiver at "
                               + rer.ReceiverUrl);
                        }
                    }
                    if (!rerExists)
                    {
                        EventReceiverDefinitionCreationInformation receiver =new EventReceiverDefinitionCreationInformation();
                        receiver.EventType = EventReceiverType.ItemAdded;


                        receiver.ReceiverUrl = "Your service url";
                        receiver.ReceiverName = "ItemAddedEvent";
                        receiver.Synchronization = EventReceiverSynchronization.Synchronous;
                        myList.EventReceivers.Add(receiver);
                        clientContext.ExecuteQuery();
                        System.Diagnostics.Trace.WriteLine("Added ItemAdded receiver at " + msg.Headers.To.ToString());
                    }
                }
            }
        }
 private void HandleItemAdded(SPRemoteEventProperties properties)
        {
            using (ClientContext clientContext =
              TokenHelper.CreateRemoteEventReceiverClientContext(properties))
            {
                if (clientContext != null)
                {
                    try
                    {
                        List photos = clientContext.Web.Lists.GetByTitle("Your List Name");
                        ListItem item = photos.GetItemById(
                           properties.ItemEventProperties.ListItemId);
                        clientContext.Load(item);
                        clientContext.ExecuteQuery();

                        item["Title"] += "\nUpdated by RER " +
                             System.DateTime.Now.ToLongTimeString();
                        item.Update();
                        clientContext.ExecuteQuery();
                    }
                    catch (Exception oops)
                    {
                        System.Diagnostics.Trace.WriteLine(oops.Message);
                    }
                }
            }
        }
.

이것이 당신을 도울 수 있기를 바랍니다.

프로그래밍 방식으로 만 가능하지만 배포 할 경우 작동하지 않습니다.

var eventReceiver = new EventReceiverDefinitionCreationInformation
                     {
                         EventType = EventReceiverType.ItemAdding,
                         ReceiverAssembly = Assembly.GetExecutingAssembly().FullName,
                         ReceiverClass = "RemoteReciverWeb.Services.ContactAddEventReceiver",
                         ReceiverName = "ContactAddEventReceiver",
                         ReceiverUrl = remoteEventEndPointUrl,
                         SequenceNumber = 1000
                     };

clientContext.Load(eventresevers);
.

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