gpt4 book ai didi

c# - page.CheckOut() 抛出 SPException : URL is invalid even though page exists

转载 作者:太空宇宙 更新时间:2023-11-03 15:37:26 24 4
gpt4 key购买 nike

我正在为 SharePoint 网站编写事件接收器,我希望此接收器在基本页面创建后编辑其内容。这是给我带来问题的功能:

public void FillPage(SPSite site, SPItemEventProperties properties, string pageName)
{
using (site)
{
// Wait until the page has been generated
while (!PageExists(properties.BeforeUrl))
{
Thread.Sleep(10000);
}

Thread.Sleep(30000); // Added so I can check that the URL exists in my browser

SPWeb web = site.RootWeb;
SPFile page = web.GetFile(properties.BeforeUrl);
page.CheckOut(); // Throws SPException: 'URL is invalid'.

...
}
}

PageExists 函数简单地使用指向刚刚生成的页面的 HttpWebRequest:

public bool PageExists(string url_ending)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri((the root site URL) + url_ending));
request.Timeout = 15000;
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return true;
}
catch (WebException we)
{
if (we.Message.Contains("Unauthorized"))
{
return true; // If it's an authorization error, the page exists but access was denied
}

return false;
}
}

CheckOut 函数返回:“SPException:URL '...' 无效。它可能引用不存在的文件或文件夹,或者引用不在当前 Web 中的有效文件或文件夹。”此外,我在包含“page.Checkout()”的行添加了一个断点并检查了该页面变量,发现其所有成员都抛出“System.IO.FileNotFoundException”或“System.IndexOutOfRangeException”,即使它指向正确的 URL。我还检查了 HttpWebRequest 是否指向了正确的 URL,确实如此,并且正如评论中所提到的,我检查该页面是否存在于我的浏览器中,然后代码才能尝试将其 checkout 。

根据我所做的搜索,我发现这个错误经常在数据库日志填满时抛出。但根据我的发现,在这种情况下,尝试从 SharePoint 站点本身 checkout 文档时也会发生此错误,而我没有遇到过该问题;当我尝试从事件接收器 check out 页面时,我只会收到此错误。知道发生了什么事吗?

最佳答案

我找到了这篇文章

http://blog.mastykarz.nl/inconvenient-spwebgetfilestring/

这解释了 GetFile 可能会产生意想不到的结果。

提供了一个解决方法:

using (SPSite site = new SPSite("http://moss"))
{
using (SPWeb web = site.RootWeb)
{
object o = web.GetFileOrFolderObject("/site/subsite1/Pages/default.aspx");
if (o is SPFile)
{
SPFile f = (SPFile)o;
}
}
}

你应该试一试!

关于c# - page.CheckOut() 抛出 SPException : URL is invalid even though page exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31343967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com