[英]How can you override Upload.aspx or AllItems.aspx etc. SharePoint 2013 (NOT SP Designer)
[英]How do I remove SitePages/Home.aspx or Forms/AllItems.aspx correctly for ClientContext?
我正在使用 CSOM 连接到 SharePoint 并从Document Libraries
加载文件。 我的问题是,当我使用以Forms/AllItems.aspx
或SitePages/Home.aspx
或其他位结尾的完整 URL 创建ClientContext
对象时,它会抛出无效的 URL 异常。
例如,这将起作用:
ClientContext ctx = new ClientContext("https://mycompany.sharepoint.com/Extranet/Test%20AutoAppraisal");
这将不起作用:
ClientContext ctx = new ClientContext("https://mycompany.sharepoint.com/Extranet/Test%20AutoAppraisal/SitePages/Home.aspx");
是否有一种安全的方法来修剪与此新 Microsoft Flow 功能( SharePoint URL 的自动修剪)类似的 SharePoint URL ?
我目前的解决方案是Uri
删除,直到Uri
有效,但这对于客户体验来说很耗时。
private static Uri TryResolvingUrl(Uri path)
{
string host = null;
while (true)
{
try
{
ClientContext ctx = new ClientContext(path)
{
Credentials = _credential,
RequestTimeout = -1
};
ctx.Load(ctx.Web, web => web.ServerRelativeUrl);
ctx.ExecuteQueryRetry();
return path;
}
catch (Exception e)
{
if (host == null)
{
host = path.Scheme + "://" + path.Authority;
}
if (path.Segments.Length == 1)
{
throw e; // we wont be able to use this url!
}
string newUrl = host;
for (int i = 0; i < path.Segments.Length - 1; i++)
{
newUrl += path.Segments[i];
}
path = new Uri(newUrl.Unescape());
}
}
}
以下代码片段供您参考。
string siteUrl = "https://mycompany.sharepoint.com/Extranet/Test%20AutoAppraisal/Account%20Managemenet%20Archive/Forms/AllItems.aspx";
var urlArray = siteUrl.Split('/');
siteUrl = urlArray[0]+"//"+urlArray[2]+"/"+urlArray[3]+"/"+urlArray[4];
using (ClientContext ctx = new ClientContext(siteUrl))
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.