从Azure上运行的辅助角色服务访问Sharepoint

时间:2015-09-24 19:18:35

标签: c# azure sharepoint azure-worker-roles

当另一个系统中的某些信息发生变化时,我需要更新有关Sharepoint的一些信息。我这样做的方式(我没有选择,而是选择公司)是:
1.当事件发生在另一个系统中时,我将消息发送到Azure ServiceBus队列:

pkg1

这部分工作正常 2.我创建了一个WorkerRole来读取ServiceBus,处理消息,并在Sharepoint中发布信息(我简化了实际代码):

QueueClient queueClient = QueueClient.CreateFromConnectionString(connectionString, "authors");  
BrokeredMessage message = new BrokeredMessage();  
message.ContentType = "Authors";  
message.Properties["FirstName"] = FirstName;  
// set other properties  
try {  
    queueClient.Send(message);  
}  
catch (Exception e) {  
    Logger.Error("Authors Windows Azure notification service fail.", e);  
}  
finally {
    queueClient.Close();
}

当我在本地运行WorkerRole(使用Microsoft Azure模拟器)时,一切都运行良好,信息在Sharepoint中更新。
但是,当我在Azure中发布WorkerRole时,它没有工作(它从ServiceBus读取消息,但没有更新Sharepoint)。我使用this调试在Azure中运行的Worker角色,当我尝试从Sharepoint检索列表时,我发现403 Forbidden异常上升(请参阅注释行" THIS LINE& #34)
。 它是完全相同的代码,在本地运行正常,在Azure中运行引发了这个异常!

注意:Office365ClaimsHelper类来自github
我已经尝试了this,但这不是我的情况(我使用云服务而不是虚拟机)。
WorkerRole的目标是.Net 4.0(再次,不是我的选择)

我试图提出最重要的代码,但如果您需要更多信息,请提前告知我们,谢谢!

1 个答案:

答案 0 :(得分:1)

所以这个问题的症结在于你在击中Sharepoint O365时获得了403。 http://www.checkupdown.com/status/E403.html告诉我们HTTP 403错误表明(我的重点):

  

Web服务器(运行Web站点)认为HTTP数据流   由客户端发送(例如您的Web浏览器)   是正确的,但访问URL 标识的资源是   因某种原因被禁止

     

这表示基本访问问题,这可能很难   解决因为HTTP协议允许Web服务器提供此功能   没有提供任何理由的回应。所以403错误是   相当于毯子' NO'由Web服务器 - 没有进一步   允许讨论。

虽然您的本地开发计算机和Cloud Service中的代码(二进制文件)可能相同,但您的配置可能不一样

因此,您是否可以检查Cloud Service的 ServiceConfiguration.Local.cscfg ServiceConfiguration.Cloud.cscfg 中的配置值是否相同,特别是 Sharepoint.Uri Sharepoint.ListName 值。