SharePoint 2013事件接收器未在程序化上载时触发

时间:2014-01-15 15:38:30

标签: c# sharepoint sharepoint-2013

我的Visual Studio 2012解决方案中有一个SharePoint文档库模板,它只是一个带有

的普通文档库
  

类型= “24442”

将其区分为事件接收者。 eventreceiver对ItemAdded和ItemUpdated做出反应

  

ListTemplateId = “24442”

只要我通过SharePoint WebInterface使用库,eventreceiver就会按预期响应并触发。我尝试使用c#程序将文件放入库中

的那一刻
list.RootFolder.Files.Add(...)

事件接收者不会开火。该文件仍保留在库中,不会被处理。 这种行为有原因吗?即使以下代码也不会触发eventreceiver:

var file = list.RootFolder.Files.Add(...);
file.Update();

我已经尝试在这些调用之后放置一个Thread.Sleep但对提升事件没有影响。 (这是在一个关于类似问题的网站上提出的)

---更新---

以下是我用来上传到文档库的代码:

using (SPSite site = new SPSite(Properties.Settings.Default.TargetLocation))
using (SPWeb web = site.OpenWeb())
{
    SPList list = web.GetListFromUrl(Properties.Settings.Default.TargetLocation);
    if (list != null)
    {
        Console.WriteLine("Opening folder({0}) and copy files...", Properties.Settings.Default.SourceFolder);
        foreach (var file in Directory.GetFiles(Properties.Settings.Default.SourceFolder))
        {
            try
            {
                Console.WriteLine("Processing file({0})...", file);

                var spfile = list.RootFolder.Files.Add(Path.GetFileName(file), File.ReadAllBytes(file), true);
                //spfile.Update();
                spfile.Item.Update();
                Console.WriteLine("Upload succeeded!");

                //File.Delete(file);
                Console.WriteLine("Moving file to target location ({0})...", Properties.Settings.Default.TargetFileLocation);

                File.Move(file, Path.Combine(Properties.Settings.Default.TargetFileLocation, Path.GetFileNameWithoutExtension(file) + DateTime.Now.ToString("yyyyMMdd_HHmm") + Path.GetExtension(file)));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Copy failed\n{0}", ex.ToString());
            }
        }
    }
}

0 个答案:

没有答案