SharePoint Foundation 2010中的SVC提供HTTP 400:错误请求

nic*_*ine 3 sharepoint wcf sharepoint-2010

一点背景.我曾与ASMX和PageMethods合作,但到目前为止还没有WCF.我正在开发Win 7 Pro,安装了Windows Communication Foundation HTTP Activation以及安装了Windows Communication Foundation HTTP Non-Activation.我还部署到也在我的计算机上运行的SharePoint Foundation 2010.

我正在为SharePoint开发用于访问非SharePoint数据的自定义Web服务.我发现了几篇关于在SharePoint中创建WCF服务的文章.我按照这一条中的说明进行了操作,http://answers.oreilly.com/topic/1404-how-to-customize-wcf-services-in-sharepoint-2010

我可以加载MEX,例如http://mySite.com/Services/MyService.svc/MEX,但如果我去http://mySite.com/Services/MyService.svc我收到HTTP 400 Bad请求.

查看事件查看器日志,没有任何与此错误相关的信息.IIS日志仅显示服务的GET.

我假设它没有正确部署或存在一些权限问题.

Chr*_*edh 7

我遇到了与开发REST服务时描述的问题相同的问题.解决的办法是改变工厂用来MultipleBaseAddressWebServiceHostFactory用于REST服务,而不是MultipleBaseAddressBasicHttpBindingServiceHostFactory一个用于SOAP服务.

例如,在.svc文件中:

<%@ ServiceHost Language="C#" Debug="true"
Service="MyProject.WCFService1, $SharePoint.Project.AssemblyFullName$"  
CodeBehind="WCFService1.svc.cs"
Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
Run Code Online (Sandbox Code Playgroud)

以下是您可以使用的不同类型工厂的描述,由Andy Kinnear提供:

  • MultipleBaseAddressBasicHttpBindingServiceHostFactory

    用于SOAP服务.必须使用基本HTTP绑定,这将基于基本HTTP绑定为服务创建端点.

  • MultipleBaseAddressWebServiceHostFactory

    用于REST服务.服务工厂使用Web绑定创建端点.

  • MultipleBaseAddressDataServiceHostFactory

    用于ADO.NET数据服务.可以使用数据服务主机工厂.