从 ASP.NET 将网站添加到 SharePoint Online 失败

Posted

技术标签:

【中文标题】从 ASP.NET 将网站添加到 SharePoint Online 失败【英文标题】:Adding sites to SharePoint Online from ASP.NET failes 【发布时间】:2016-11-13 15:38:58 【问题描述】:

我正在通过 Azure 应用服务开发一个 SharePoint 加载项(用于在 Sharepoint Online [Office 365] 环境中使用)。我正在尝试为某些人创建一个站点管理器。我已经发布了加载项并且可以访问我的 ASP.Net 页面。我正在使用 Microsoft.Sharepoint 库(来自 NuGet)。当我尝试添加网站时,出现以下错误:

无法加载文件或程序集“Microsoft.SharePoint.Library, 版本=15.0.0.0,文化=中性,PublicKeyToken=71e9bce111e9429c' 或 它的依赖项之一。系统找不到指定的文件。

这是我正在使用的代码:

public void AddWebsite(string siteUrl, string title)

    using (SPSite site = new SPSite(siteUrl))
    
        string parentWebName = ""; //here I set the parent webname (left in blank for now)

        using (SPWeb parentWeb = site.OpenWeb(parentWebName))
        
            string webTitle = title;
            string webDesc = "This site is created by ... | SiteName: " + title;

            Regex rgx = new Regex("[^a-zA-Z0-9 -]");
            string webName = rgx.Replace(title, "");

            string webUrl = String.Format("0/1", parentWebName, webName);
            uint webLcid = parentWeb.Language;

            string webTemplateName = "STS#2";

            SPWeb newWeb = null;

            try
            
                newWeb = site.AllWebs.Add(webUrl, webTitle, webDesc, webLcid, webTemplateName, false, false);
            
            catch (ArgumentException ex)
            
                Console.WriteLine(ex.Message);
            

            if (newWeb != null)
            
                newWeb.Navigation.UseShared = true;

                SPNavigationNode node = new SPNavigationNode(newWeb.Title, newWeb.ServerRelativeUrl);

                bool parentInheritsTopNav = newWeb.ParentWeb.Navigation.UseShared;

                if (parentInheritsTopNav)
                    site.RootWeb.Navigation.TopNavigationBar.AddAsLast(node);
                else
                    newWeb.ParentWeb.Navigation.TopNavigationBar.AddAsLast(node);

                newWeb.Dispose();
            
        
    

谁能告诉我我做错了什么?

【问题讨论】:

【参考方案1】:

在 Visual Studio 中展开参考文件夹,选择程序集“Microsoft.SharePoint.Library”并按 F4,然后将 Copy Local 的值更改为 true。

【讨论】:

所有引用都将复制本地选项设置为 true。就像 Microsoft.SharePoint.Library 不是 Microsoft.SharePoint DLL 的一部分。 我没见过这个DLL,你在用吗? 不,我认为它依赖于主要的 Microsoft.SharePoint DLL。我的代码只做我的问题中描述的事情。

以上是关于从 ASP.NET 将网站添加到 SharePoint Online 失败的主要内容,如果未能解决你的问题,请参考以下文章

如何将c#做好的asp.net网站部署到iis上

从内部网站为 ASP.NET Core 添加用户

保存对话框以下载文件,将文件从 ASP.NET 服务器保存到客户端

如何将 AzureAD 和 AzureADBearer 添加到 asp.net core 2.2 web api

Fiddler 没有从 ASP.NET 网站嗅探 SOAP 流量

ASP.NET MVC3 - 将项目动态添加到对象的数组中