部署于SharePoint的WCF REST接口报413错误,如何调整上传限制?
核心问题分析
你遇到的两个问题根源分别是:
- 413错误:WCF默认64KB的消息大小限制,同时IIS本身也有请求大小拦截规则
- 服务注册重复错误:在服务子目录单独添加
web.config,与SharePoint主站点的服务注册冲突
具体解决步骤
1. 删除服务目录下的独立web.config
直接删掉_vti_Bin/testproject目录下的自定义web.config——SharePoint站点的主web.config是统一配置入口,子目录单独配置会导致服务地址重复注册,触发"A registration already exists"错误。
2. 修改SharePoint主站点的web.config(IIS站点根目录下)
在主配置文件的<system.serviceModel>节点内添加自定义绑定配置,同时关联到你的服务:
<system.serviceModel> <bindings> <webHttpBinding> <!-- 自定义绑定,设置更大的消息上限(示例为10MB,可按需调整) --> <binding name="ExtendedWcfBinding" maxReceivedMessageSize="10485760" maxBufferSize="10485760" maxBufferPoolSize="10485760"> <!-- 配套调整读取配额,避免子参数限制请求 --> <readerQuotas maxDepth="32" maxStringContentLength="10485760" maxArrayLength="10485760" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> </binding> </webHttpBinding> </bindings> <!-- 找到你的服务节点,更新绑定配置引用 --> <services> <service name="SharePointProject1.Service1"> <endpoint address="" <!-- 保持空,服务地址由.svc文件决定 --> binding="webHttpBinding" bindingConfiguration="ExtendedWcfBinding" contract="SharePointProject1.IService1" /> </service> </services> </system.serviceModel>
3. 调整IIS请求过滤限制
除了WCF配置,还需要让IIS允许大请求通过,在主web.config的<system.webServer>节点添加:
<system.webServer> <security> <requestFiltering> <!-- 单位为字节,示例为10MB --> <requestLimits maxAllowedContentLength="10485760" /> </requestFiltering> </security> </system.webServer>
4. 生效配置
修改完成后重启IIS站点,测试上传大于64KB的JSON请求,确认413错误消失。
关键注意事项
- WCF的
maxReceivedMessageSize必须与maxBufferSize、readerQuotas内的参数匹配,避免单一参数成为瓶颈 - 不要在SharePoint服务子目录单独配置
web.config,所有服务配置统一在主站点web.config中维护
内容的提问来源于stack exchange,提问作者matt
相关产品推荐
相关产品推荐

