none
Место хранения файла до сохранения в библиотеке во время работы ресивера ItemAdding RRS feed

  • Вопрос

  • Всем привет.

    Передо мной стоит задача отправлять файл по почте ДО сохранения его на сервере шарика. 

    Для этого использую ресивер ItemAdding.

    Код ресивера такой:

    public override void ItemAdding(SPItemEventProperties properties)
            {
                var f = properties.Web.GetFile(properties.BeforeUrl);
                EmailHelper.SendFile(f);
    
                base.ItemAdding(properties);
            }

    Смущает то, что в properties.BeforeUrl указан относительный путь к файлу "testLib/testFile.txt" (где testLib - библиотека к которой привязан ресивер, testFile.txt - файл, который я загружаю). 

    Означает ли это, что файл уже сохранен где-то на сервере Sharepoint, либо, он, просто, хранится в оперативной памяти сервера, пока я не вызову base.ItemAdding?

    Ведь, по идее, ItemAdding должно возникать до того, как создастся элемент в библиотеке(соответственно и файл тоже). 

    Или это работает так: файл сначала сохраняется в библиотеку, а уже потом начинается процесс создания элемента, связанного с этим файлом и запускаются все ресиверы?

    Очень важно понять точную последовательность действий, но нигде не могу найти инфу.

    SP2016



    • Изменено Kirill Revenkov 9 апреля 2021 г. 9:19 добавил версию SP
    9 апреля 2021 г. 8:47

Все ответы

  • Здравствуйте

    У меня нет точного ответа, на Ваш вопрос, потому что я не специалист в данной области, но скорее всего речь идет об оперативной памяти.

    Надеюсь, кто-нибудь из участников форума сможет дать более точный ответ.


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    10 апреля 2021 г. 10:42
    Модератор

    Чтобы понять, что происходит в вашем Event Reciever:

    1. Используйте try/catch,
    2. Создайте пошаговое логирование, тем самым будет понятно какое действие происходит в первую очередь,
    3. Также можно поставить breakpoint на нужную строчку кода в Visual studio.
    12 апреля 2021 г. 7:17
  • Всю информацию, которую я написал в вопросе, я и узнал через дебаг режим. 

    в properties.BeforeUrl указан относительный путь к файлу "testLib/testFile.txt" (где testLib - библиотека к которой привязан ресивер, testFile.txt - файл, который я загружаю)

    Значит ли это, что в момент возникновения события ItemAdding файл уже физически находится в библиотеке?

    12 апреля 2021 г. 9:32