因此,我们已经为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部署之前,我们注意到了同样的问题,但反过来,Machine#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”
Install-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
}
}
}
答案 0 :(得分:0)
它可能是一个硬编码的路径/网址,但是没有足够的信息来识别问题,如果您提供更多详细信息或者您共享一些代码,我会很高兴用更详细的理论更新我的答案。
答案 1 :(得分:0)
找出问题所在。我没有用上面的文件代码包含它们。但我们将StreamWriting转换为服务器上的文本文件以帮助我们进行调试。问题在于,当用户1登录到他们的机器并且日志文件不存在时,它们将被生成。现在没有其他用户对这些文件具有读/写访问权限,因此它在我们的调试文件中出错了。但是Windows用户可以按照他们想要的那样运行它,因为他们是文件的所有者:/