标签: sharepoint-2013

创建或获取特定的SPTimeZone实例

创建以下特定实例的最方便方法是什么Microsoft.SharePoint.SPTimeZone:

SPTimeZone utc = SPRegionalSettings.GlobalTimeZones
                                   .OfType<SPTimeZone>()
                                   .FirstOrDefault(tz => tz.Information.Bias == 0
                                                   && tz.Information.DaylightBias == 0);
Run Code Online (Sandbox Code Playgroud)

这个黑客是我能得到的最好的......

这对我来说尤其是一个问题,因为我想模拟这部分代码进行单元测试并强制它始终返回UTC.该属性GlobalTimeZones似乎依赖于HttpContext.Current或实际请求 - 我在单元测试中没有的先决条件......

注意:我知道只有System.TimeZoneInfo第三方组装强迫我使用SPTimeZone ......

c# sharepoint unit-testing sharepoint-2013

74
推荐指数
1
解决办法
1425
查看次数

IIS未列出与启动的URL匹配的网站

我在IIS上部署了sharepoint 2013应用程序.当我想开始调试时,我遇到了这个错误:

"无法在Web服务器上启动调试.IIS不会列出与启动的URL匹配的网站".

我为这个问题找到了一些解决方案,但没有一个适合我.我发现的解决方案:

  1. VS应该以管理员身份运行.我做到了
  2. 应在IIS上启用Windows身份验证.我做到了
  3. 应在Windows功能中打开"IIS元数据库和IIS 6配置兼容性".我做到了

它仍然无法正常工作.还有其他方法吗?请帮我.

iis debugging visual-studio-2012 sharepoint-2013

61
推荐指数
1
解决办法
4万
查看次数

在线授权Office 365/Sharepoint

我编写了一个作为(PaaS)托管在Azure中的WCF服务.该服务反过来需要与Sharepoint 2013 Online/Office 365交谈.

我正在使用Sharepoint Client对象模型与它通信,但不断收到以下错误:"远程服务器返回错误:(403)禁止"当我们登录通过浏览器访问SharePoint实例时,它通常会带你到 https://login.microsoftonline.com/login.srf,这样您就可以使用Live ID登录.问题是我们使用的是联合帐户而不是Live ID,因此会再次重定向到adfs站点进行登录.我查看了使用基于声明的身份验证的http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx上的代码示例,但在尝试检索Saml令牌时,这始终会失败,并显示"身份验证失败"消息.

如果我理解正确的话.这样做的一种方法是获取Saml Token,将其传递给SPO,然后SPO将返回两个cookie,我需要将这些cookie包含在使用Client对象模型发出的请求中.问题是我没有找到任何关于如何在C#中使用Federated帐户进行身份验证的正确示例.

任何人都可以指出我正确的方向,关于如何继续授权我的WCF服务与SharePoint交谈.

对不起,如果这是在错误的论坛.我不确定这是Azure问题还是仅仅是SharePoint,因为我对这两种技术都不熟悉.

c# authentication sharepoint sharepoint-2013

45
推荐指数
1
解决办法
8148
查看次数

如何使用CSOM从/向SharePoint 2013下载/上载文件?

我正在开发一个Win8(WinRT,C#,XAML)客户端应用程序(CSOM),需要从/向SharePoint 2013下载/上载文件.

如何进行下载/上传?

c# windows-8 sharepoint-2013 csom

30
推荐指数
5
解决办法
13万
查看次数

SharePoint 2013在整页加载后添加javascript

免责声明:我没有使用SharePoint2013的经验.

我有问题 - 我必须在整个页面加载后包含/触发一些javascript函数.我尝试监听DOMDocumentReady和window.load事件,但sharepoint在这些事件之后呈现页面的其余部分.

我的问题是:在呈现带有ajax的整个页面之后,我应该怎么做才能运行脚本.另外我注意到页面导航基于哈希(#)部分.显然我也必须发现那一刻.

任何帮助甚至链接到文档中的右页都会很棒!

javascript sharepoint-2013

29
推荐指数
3
解决办法
9万
查看次数

SharePoint 2013使用JavaScript获取当前用户

如何在脚本编辑器Web部件中使用JavaScript获取当前用户名?

javascript sharepoint sharepoint-2013

26
推荐指数
4
解决办法
11万
查看次数

使用SharePoint 2013 REST API添加列表项

我正在尝试使用带有REST API的SharePoint 2013在现有列表中添加新项.

这里有相当好的文档:http://msdn.microsoft.com/en-us/library/jj164022(office.15).aspx#ListItems

我试图添加项目的列表称为"资源",因此我执行以下http POST操作来添加新项:

POST https://<site>/apps/reserve/_api/lists/getbytitle('Resources')/items
    X-RequestDigest: <digest_key>
    Content-Type: application/json;odata=verbose

    {
        "__metadata":    {"type": "SP.Data.ResourcesListItem"},
        "Title":         "New Title",
        "Description":   "New Description",
        "Location":      "Sunnyvale"
    }
Run Code Online (Sandbox Code Playgroud)

但是我收到了以下错误:

A type named 'SP.Data.ResourcesListItem' could not be resolved by the model.
When a model is available, each type name must resolve to a valid type.
Run Code Online (Sandbox Code Playgroud)

所以我假设我没有资源名称的正确名称.在文档中,它说:

To do this operation, you must know the ListItemEntityTypeFullName property of the list
and pass that as the value of type in the HTTP request …
Run Code Online (Sandbox Code Playgroud)

rest sharepoint sharepoint-api sharepoint-2013

24
推荐指数
1
解决办法
3万
查看次数

如何通过Python中的REST API访问sharepoint站点?

我在本地VM中的SharePoint 2013中有以下站点:

http://win-5a8pp4v402g/sharepoint_test/site_1/

当我从浏览器访问它时,它会提示我输入用户名和密码,然后正常工作.但是我试图在Python中使用REST API来做同样的事情.我正在使用请求库,这就是我所做的:

import requests
from requests.auth import HTTPBasicAuth


USERNAME = "Administrator"

PASSWORD = "password"

response = requests.get("http://win-5a8pp4v402g/sharepoint_test/site_1/", auth=HTTPBasicAuth(USERNAME, PASSWORD))

print response.status_code
Run Code Online (Sandbox Code Playgroud)

但是我得到了401.我不明白.我错过了什么?

注意:我遵循了这篇文章http://tech.bool.se/using-python-to-request-data-from-sharepoint-via-rest/

python authentication rest sharepoint sharepoint-2013

20
推荐指数
1
解决办法
6万
查看次数

如何从提供商托管的应用程序获取请求摘要值?

我正在使用javascript REST Api开发SharePoint 2013 Provider托管应用程序.为了对sharepoint项执行创建(POST)或更新(MERGE)操作,我需要使用请求设置"X-RequestDigest"标头.

在SharePoint托管的应用程序中,我能够使用http://contoso.sharepoint.com/SharePointHostedApp/_api/contextinfo服务来检索请求摘要值; 但是,在提供商托管的应用程序中,我无法获得该值.

提供商托管应用程序的第一个区别是,现在我们需要发出跨域请求,因为我们不是在sharepoint站点中运行,而是在不同服务器上托管的不同域中运行.要明确:而不是

$.ajax({
    url: appWebUrl + '/_api/contextinfo',
    method: "POST",
    headers: { "Accept": "application/json; odata=verbose" }
})
Run Code Online (Sandbox Code Playgroud)

我假设我们需要使用它SP.RequestExecutor来执行跨域请求.当我构造请求时,它看起来如下(我已经将实际的url更改为假的,但基本上我们告诉代理使用主机web有目标并获取/_api/contextinfo端点):

https://contoso-6f921c6addc19f.sharepoint.com/ProviderHostedApp/_api/SP.AppContextSite(@target)/contextinfo?@target=%27https://contoso.sharepoint.com%27

但是,我收到此错误:Cannot find resource for the request contextinfo.意味着端点不存在.

我确保使用application/json;odata=verbose带有空体的正确标头的POST方法.

如何从/_api/contextinfo服务获取请求摘要值到提供者托管应用程序?

根据我研究的内容:

  • 我们不能用$('#__REQUESTDIGEST').val(); 因为提供商托管的应用程序无法使用它.
  • 我们需要使用跨域请求中的一些,因为我在sharepoint之外运行.
  • 我已经尝试将跨域请求的目标设置为hostWebUrl和appWebUrl,并且两者都给出了相同的错误.

必须有某种方法来获取此值,否则我们将仅限于使用JavaScript时的读取操作.还有其他人用javascript解决了这个问题吗?

从技术上讲,我可以尝试使用服务器上的CSOM实现所需的服务,并使用WebAPI或WCF公开它们,但必须实现它似乎是不合理的.

更新:

我继续尝试添加一个WebAPI控制器,该控制器公开一个检索请求摘要值的服务.这实际上确实检索了请求摘要值; 但是,当尝试在未来调用的标头中使用它时,我收到错误:"The security validation for this page is invalid and might be corrupted. Please use your web browser's Back button to try your …

sharepoint ms-office sharepoint-api sharepoint-2013

20
推荐指数
2
解决办法
3万
查看次数

使用AngularJS将正确编码的(base64?)映像上载到SharePoint

我可以将图像文件上传到SharePoint,但它不会被识别为图像.我已经尝试使用以下指令,该指令基于研究表明图像在上传到SharePoint时需要进行base64编码,但它仍然会上传一个看似已损坏的文件:https://github.com/adonespitogo/angular-base64-upload

我很高兴使用此指令,但不确定如何将我需要的内容传递到SharePoint的REST API中.

我原来的迭代不使用这个指令,但更多的是直接上传尝试.

我需要达到的目的如下:

1)成功上传图像而不会"损坏",这是否需要base64编码/我该如何实现?

2)按名称上传图像(不是"test.jpg")并有一些元数据(例如上传一个带有它所属的标题或部门名称的图像)

迭代1:无指令 这是我的HTML(请注意控制器通过ng-route绑定到页面):

 <div class="col-md-12">
        <form>
            <input type="file" onchange="angular.element(this).scope().filesChanged(this)" data-ng-model="files" multiple>
            <button data-ng-click="upload()">Submit</button>
            <li data-ng-repeat="file in files">{{file.name}}</li>
        </form>            
    </div>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

$scope.filesChanged = function (elm) {
        $scope.files = elm.files
        $scope.$apply();
    }
    $scope.upload = function () {
        var fd = new FormData()
        angular.forEach($scope.files,function(file){
            fd.append('file',file)
        })
            $http.post("/sites/asite/_api/web/lists/getByTitle('Images')/RootFolder/Files/add(url='test.jpg',overwrite='true')", fd,
                    {
                        transformRequest: angular.identity,
                        headers: {
                            'Content-Type':undefined, 'X-RequestDigest': $("#__REQUESTDIGEST").val()}
                }).success(function (d) {
                    console.log(d);
                });
            }
Run Code Online (Sandbox Code Playgroud)

更新:我认为这个问题与我的$ http帖子分离到了SharePoint.使用上面提到的指令,我可以输出base64,但不确定如何将其传递到我的帖子中进行上传.

迭代2:使用指令 这是我使用https://github.com/adonespitogo/angular-base64-upload指令的当前HTML :

<form>
<input type="file" data-ng-model="files" …
Run Code Online (Sandbox Code Playgroud)

javascript sharepoint image angularjs sharepoint-2013

19
推荐指数
1
解决办法
5940
查看次数