首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件接收器(作用域到web),在部署时,它附加到列表,但是它也附加到站点上。

事件接收器(作用域到web),在部署时,它附加到列表,但是它也附加到站点上。
EN

Stack Overflow用户
提问于 2018-05-21 03:35:41
回答 1查看 347关注 0票数 1

嗨,我有一个事件接收器,是范围的网页。

在开发环境中,我部署并设法只附加到特定的列表,它只会从这个特定的列表中触发。

但是,当我部署到生产部门时,它设法附加到列表(从PowerShell检查,没有重复),但是它也附加到站点(我的假设),它将触发从任何列表。

我已经部署了两次相同的wsp,其中一次是范围到站点,之后我将其更改为scope到web并重新部署。

现在产生了生产环境:

  • 事件接收者将从所有列表中触发
  • 在特定的列表中,它将触发两次,我相信,因为它(事件接收者)被附加到该特定列表,同时它被附加到站点,因此触发了两次。( ER中没有更新,只发送电子邮件)

预期结果:

  • 只在特定列表上触发,只触发一次。

Elements.XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListUrl="/ISD/Lists/ICForm">
      <Receiver>
        <Name>Email_EventItemAdded</Name>
        <Type>ItemAdded</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>IC___Event_Receiver.Email_Event.Email_Event</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>
      <Receiver>
        <Name>Email_EventItemUpdated</Name>
        <Type>ItemUpdated</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>IC__Event_Receiver.Email_Event.Email_Event</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>
  </Receivers>
</Elements>

特性说明:

代码语言:javascript
复制
<Feature xmlns="http://schemas.microsoft.com/sharepoint/" Scope="Web" Title="IC - Event Receiver Feature" Id="aef9e351-e707-4848-927d-6f5d525aab1a">
  <ElementManifests>
    <ElementManifest Location="Email Event\Elements.xml" />
  </ElementManifests>
</Feature>

Package.Template.XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Solution xmlns="http://schemas.microsoft.com/sharepoint/">
<Assemblies>
<Assembly Location="IC - Event Receiver.dll" DeploymentTarget="GlobalAssemblyCache">
<SafeControls>
<SafeControl Assembly="$SharePoint.Project.AssemblyFullName$"
Namespace="$SharePoint.Project.FileNameWithoutExtension$" TypeName="*" Safe="True"></SafeControl>
</SafeControls>
</Assembly>
</Assemblies>
</Solution>

有人遇到过这样的问题吗?或者对如何解决这个问题有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-05-22 01:21:55

如果要限制事件接收器附加到特定列表,请使用ListUrl指定列表。

例如:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListUrl="/Lists/customlist">

并确保在正确事件接收器( 一个线程供您参考 )中更新列表项时禁用事件触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50441656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档