【发布时间】:2016-10-01 07:36:18
【问题描述】:
由于我们从 2007 年到 2010 年的迁移/更新,因此我们为 SharePoint 2010 创建了一个更新版本的 WSP。
WSP 是 ItemAdded() 的事件处理程序/接收器,我们让它按预期工作。问题是该操作似乎只对一台计算机/机器有效,而对其他计算机/机器无效。
当项目被添加到列表时,WSP 在共享文档库中创建一个文件夹,创建一个 wiki 页面,然后使用指向共享文档和 Wiki 的链接更新新的列表项。
当机器#1 和用户#1 触发所有操作时,当机器#2(M2) 和用户#2(U2) 或M3 和U3 非任务发生时,当创建新项目时。
用户 #2 可以登录 M1 并创建一个新项目,所有操作都可以正常工作。但如果 U1 使用 M2 或 M3 创建项目,则不会触发事件。机器 #1 能够根据需要多次触发事件,但其他计算机无法做到。
如果您能够理解,是本地机器或 SP 服务器上的代码或某种缓存设置,还是其他什么?任何帮助表示赞赏。
更新:所有机器都在同一个网络上。这些机器都不是服务器,而是各种个人笔记本电脑。开发是在单独的机器上完成的。所有人都通过相同的 URL 访问。所有用户都有相同的访问权限。这目前在我们的测试站点上,一旦发生迁移/升级,它将切换到生产环境。
在当前的 .WSP 部署之前,我们注意到了同样的问题,但情况正好相反,机器 #2 完成了所有更新,但机器 #1 和 #3 却不能。我们唯一能想到的是,那些机器是部署后最先触发事件的。
I'm Not doing the .WSP install but our IT guy is(won't let us have access :/ but I understand) but below is the install commands he is running.
Add-SPSolution -LiteralPath "OurPath/ourFile.wsp"
安装-SPSolution -Identity ourIdentity -WebApplication http://myhost.com/ -GACDeployment
下面是代码的主要部分
public class CreateWikiAndFolder : Microsoft.SharePoint.SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
try
{
//this.DisableEventFiring();
base.EventFiringEnabled = false;
string sUrlOfWikiPage = string.Empty;
string sUrlOfNewFolder = string.Empty;
string sSubsiteRUL = string.Empty;
string sCurrentItemTitle = properties.ListItem["Title"].ToString();
string sWikiListName = "TR Wikis";
string sDocLibName = "Shared Documents";
string sTRListID = "TR Status";
if (sTRListID.ToUpper().Equals(properties.ListTitle.ToString().ToUpper()))
{
//Create the Folder
sUrlOfNewFolder = CreateFolder(properties.ListItem.Web, sDocLibName, sCurrentItemTitle);
//Create the Wiki
string ItemDispFormUrl = String.Concat(properties.ListItem.Web.Url, "/", properties.ListItem.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url, "?ID=", properties.ListItem.ID.ToString());
sUrlOfWikiPage = CreateWiki(properties.ListItem.Web, sWikiListName, sCurrentItemTitle, ItemDispFormUrl, sUrlOfNewFolder);
//Update the current TR Item
SPWeb myWeb = properties.ListItem.Web;
myWeb.AllowUnsafeUpdates = true;
SPListItem myListItem = properties.ListItem;
SPFieldUrlValue shareFolderURLValue = new SPFieldUrlValue();
shareFolderURLValue.Description = "Shared Folder";
shareFolderURLValue.Url = sUrlOfNewFolder ;
myListItem["SharedFolder"] = shareFolderURLValue;
myListItem.Update();
myWeb.AllowUnsafeUpdates = false;
}
base.EventFiringEnabled = true;
}
catch (Exception e)
{
//Currently throwing nothing
}
}
}
【问题讨论】:
-
您可以通过添加以下信息来改进这个问题:这3台机器是否在同一网段?机器#1 是您开发解决方案的地方吗?机器#1 是服务器吗?您是否有不同的区域 (URL) 来访问同一个 Web 应用程序?每个用户有什么权限?您是如何部署 WSP(农场或沙盒)的?分享部分代码会很有帮助。
-
谢谢,上面也添加了。所有机器都在同一个网络上。这些机器都不是服务器,而是各种个人笔记本电脑。开发是在单独的机器上完成的。所有人都通过相同的 URL 访问。所有用户都有相同的访问权限。这目前在我们的测试站点上,一旦发生迁移/升级,它将切换到生产环境。在当前的 .WSP 部署之前,我们注意到了同样的问题,但它是相反的,机器 #2 完成了所有更新,但机器 #1 和 #3 不能。我们唯一能想到的是,那些机器是部署后最先触发事件的。
标签: c# sharepoint sharepoint-2010