创建以下特定实例的最方便方法是什么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 ......
我在IIS上部署了sharepoint 2013应用程序.当我想开始调试时,我遇到了这个错误:
"无法在Web服务器上启动调试.IIS不会列出与启动的URL匹配的网站".
我为这个问题找到了一些解决方案,但没有一个适合我.我发现的解决方案:
它仍然无法正常工作.还有其他方法吗?请帮我.
我编写了一个作为(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,因为我对这两种技术都不熟悉.
我正在开发一个Win8(WinRT,C#,XAML)客户端应用程序(CSOM),需要从/向SharePoint 2013下载/上载文件.
如何进行下载/上传?
免责声明:我没有使用SharePoint2013的经验.
我有问题 - 我必须在整个页面加载后包含/触发一些javascript函数.我尝试监听DOMDocumentReady和window.load事件,但sharepoint在这些事件之后呈现页面的其余部分.
我的问题是:在呈现带有ajax的整个页面之后,我应该怎么做才能运行脚本.另外我注意到页面导航基于哈希(#)部分.显然我也必须发现那一刻.
任何帮助甚至链接到文档中的右页都会很棒!
如何在脚本编辑器Web部件中使用JavaScript获取当前用户名?
我正在尝试使用带有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) 我在本地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/
我正在使用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(); 因为提供商托管的应用程序无法使用它.必须有某种方法来获取此值,否则我们将仅限于使用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,但它不会被识别为图像.我已经尝试使用以下指令,该指令基于研究表明图像在上传到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) sharepoint-2013 ×10
sharepoint ×7
c# ×3
javascript ×3
rest ×2
angularjs ×1
csom ×1
debugging ×1
iis ×1
image ×1
ms-office ×1
python ×1
unit-testing ×1
windows-8 ×1