Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint事件处理程序未启动_Sharepoint_Content Type_Event Handling - Fatal编程技术网

Sharepoint事件处理程序未启动

Sharepoint事件处理程序未启动,sharepoint,content-type,event-handling,Sharepoint,Content Type,Event Handling,我已经为ItemAdded创建了一个事件处理程序,以便在站点上添加一个项目时,我的代码检查它是否是一个文件夹。如果是,则应将该文件夹的内容类型更改为自定义内容类型 活动没有启动,所以我想知道我是否以正确的方式和/或在正确的地方进行。这是我的密码: public class ItemAddedHandler : SPItemEventReceiver { public override void ItemAdded(SPItemEventProperties properties) { b

我已经为ItemAdded创建了一个事件处理程序,以便在站点上添加一个项目时,我的代码检查它是否是一个文件夹。如果是,则应将该文件夹的内容类型更改为自定义内容类型

活动没有启动,所以我想知道我是否以正确的方式和/或在正确的地方进行。这是我的密码:

public class ItemAddedHandler : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
    base.ItemAdded(properties);

    SPListItem listItem = properties.ListItem;
    SPList list = properties.ListItem.ParentList;
    SPContentType contentType;

    if (listItem.FileSystemObjectType == SPFileSystemObjectType.Folder &&
       (list.Title == "Apps" || list.Title == "Data" || list.Title == "Public"))
    {
        contentType = list.ContentTypes["Custom Folder"];

        listItem["Content Type"] = contentType.Name;
        listItem["Content Type ID"] = contentType.Id.ToString();
        listItem.SystemUpdate();
    }
}
}
如果为了完成这项任务我做错了什么,请告诉我。非常感谢

根据要求,使用以下方法添加该功能:

  • 签署并编译上述代码,并将DLL复制到服务器
  • 已将DLL复制到GAC
  • 创建的文件夹:C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\SPEventHandler 4.使用Visual Studio生成的GUID创建Feature.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <Feature Scope="Web" 
      Title="Added Event Handler" 
      Id="{27C2FDFF-ADA0-4984-955C-6448E182FA88}" 
      xmlns="http://schemas.microsoft.com/sharepoint/">
      <ElementManifests>
        <ElementManifest Location="Elements.xml"/>
      </ElementManifests>
    </Feature>
    
    
    
  • 5.使用GAC中DLL的PublicKeyToken和ListTemplateID创建Elements.xml,用于处理文档库(101):

    
    加法器
    添加项目
    10000
    SPEventHandler,版本=1.0.0.0,文化性=中性,
    PublicKeyToken=f2e7de6c4a924a03
    SPEventHandler.ItemAddedHandler
    
  • 在服务器上运行以下命令: stsadm-o installfeature-filename SPEventHandler\Feature.xml
  • 在站点(SP 2007)上,站点操作->站点设置->修改所有站点设置->站点功能并激活“添加事件处理程序”
  • 在这些步骤之后,在这个站点上的列表中创建一个新项目似乎没有做任何事情,包括写入事件日志,所以我想知道它是否正在运行


    谢谢

    我想明白了。需要为文档库启用“我的自定义内容类型”,然后才能为项目指定该内容类型。谢谢大家的回答。

    我知道这是一个编程问题,但值得一提的是,您可能会在这里得到更好的回答:是的,我也在那里尝试过。谢谢。我感觉到了你的痛苦。我做了一段时间sharepoint,但没有足够的资源或了解它的人。你会遇到管理员、一些开发人员等。请展示你如何注册接收者的代码/配置。我已经编辑了这个问题,以包括部署过程中的步骤。谢谢
        <?xml version="1.0" encoding="utf-8" ?>
        <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
          <Receivers ListTemplateId="101">
            <Receiver>
              <Name>AddedEventHandler</Name>
              <Type>ItemAdded</Type>
              <SequenceNumber>10000</SequenceNumber>
              <Assembly>SPEventHandler, Version=1.0.0.0, Culture=neutral, 
                  PublicKeyToken=f2e7de6c4a924a03</Assembly>
              <Class>SPEventHandler.ItemAddedHandler</Class>
              <Data></Data>
              <Filter></Filter>
            </Receiver>
          </Receivers>
        </Elements>