0

我创建了一个应在 SharePoint 中创建日历列表​​的提供商托管应用程序。我希望它稍后成为一个组日历,但首先我只需要执行第 1 步:创建一个日历。

我找不到任何有关如何以编程方式创建 SharePoint 日历的提供商托管指南。我找不到ListTemplateStyle日历,所以我尝试了事件模板,我不知道它是否可以工作,因为当我尝试在下面运行此代码时出现错误:

 Uri hostWeb = new Uri(Request.QueryString["SPHostUrl"]);

        using (var clientContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWeb, Request.LogonUserIdentity))
        {
            Web web = clientContext.Web;
            ListCreationInformation listCreator = new ListCreationInformation();
            listCreator.Title = "CompanyCalendar";
            listCreator.Description = "Workcalendar";
            listCreator.TemplateType = (int)ListTemplateType.Events; //106 = events
            //clientContext.Load(web);
            web.Lists.Add(listCreator);
            clientContext.ExecuteQuery();

        }

System.Net.WebException:远程服务器返回错误:(401)未经授权。

Line 27:                 //clientContext.Load(web);
Line 28:                 web.Lists.Add(listCreator);
Line 29:                 clientContext.ExecuteQuery();
Line 30: 
Line 31:             }

出于某种原因,我似乎未经授权在此处创建列表。我将网络权限设置为完全控制,我的证书如下所示:

<appSettings>
<add key="ClientId" value="ebcb24ca-afbb-4822-8887-f91504f3d25f" />
<add key="ClientSigningCertificatePath" value="C:\Certs\HighTrustSampleCert.pfx" />
<add key="ClientSigningCertificatePassword" value="1234" />
<add key="IssuerId" value="11111111-1111-1111-1111-111111111111" />
</appSettings>

有任何想法吗?

我的第二个问题是:要使日历成为组日历,我必须学习什么?有什么提示吗?

谢谢

4

2 回答 2

0

我自己解决了。

我显然使用了 SharePoint 开发人员站点进行调试(在我的情况下为“ https://mysite@company.onmicrosoft.com ”)。由于我在虚拟机上工作,因此我应该使用该本地服务器站点(在我的情况下为"http://SERVER1“)。

当我登录到我的虚拟机时,我使用我的 Windows 用户名和密码登录(在我的情况下,用户名是“开发人员”)并且能够使用该登录与代码片段"Request.LogonUserIdentity"我的调试站点必须是虚拟服务器(在我的情况下"http://SERVER1”)。

在我更改为 SERVER1 之后,它工作了,并且创建ListTemplateType.Events 了日历模板,问题就解决了。

问题 1:如何创建共享点日历​​。
回答:(int)ListTemplateType.Events;

问题 2: System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Answear:检查您的调试站点。确保"Request.LogonUserIdentity"或(您登录到 Windows 的用户)对您调试的站点具有承诺

问题 3:如何"true"在 privider 托管的应用程序上以编程方式设置“组日历选项”。
回答:没有解决:(

于 2014-05-26T14:09:11.510 回答