自定义SharePoint 2010 WCF服务 - 如何设置MaxReceivedMessageSize参数

时间:2010-10-18 14:52:06

标签: c# wcf sharepoint sharepoint-2010

我在SharePoint 2010 Visual Studio空项目中开发了自定义WCF Web服务。

我的网络服务运作良好。该问题与我可以发送到此Web服务的请求的大小有关。我意识到这是300Kb左右。如果我比那更大,服务/客户端就会向我发送一个例外。

我在网上浏览过,看到MaxReceivedMessageSize设置可能是我的解决方案。我尝试使用FeatureActivated方法使用这种请求设置此信息:

// increase maximum size of requests to this web service: http://msdn.microsoft.com/en-us/library/ff599489.aspx
SPWebService contentService = SPWebService.ContentService;
contentService.ClientRequestServiceSettings.MaxReceivedMessageSize = -1;
SPWcfServiceSettings csomWcfSettings = new SPWcfServiceSettings();
csomWcfSettings.MaxReceivedMessageSize = 10485760; // 10MB
contentService.WcfServiceSettings["PT-SP-P2S-DocumentCreator.svc"] = csomWcfSettings;
contentService.Update(); // access denied thrown here!

使用该代码,我拒绝访问(我实际上是网站集管理员)。

我也知道可以在Web服务主机的app.config中设置此参数,但是在SharePoint中,我需要在哪里更改此参数。

1 个答案:

答案 0 :(得分:1)

我认为您应该在激活该功能的Web应用程序的web.config文件中进行此更改。 SharePoint提供了用于更改web.config的API。事实上,使用API​​来更改web.config是首选选项,因为SharePoint使用Timer Job并对您环境中的所有Web前端服务器进行相同的更新。有两种方法可以对web.config进行更改,如下所述:

http://msdn.microsoft.com/en-us/library/ms460914.aspx

在您的情况下,由于您只想在激活功能时进行更改,因此您将采用此处记录的API方法:http://msdn.microsoft.com/en-us/library/bb861909.aspx