我遇到了让我的WCF服务与其他客户端一起工作的问题。
ServiceContract看起来像这样:
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml,
UriTemplate = "/calculation/{accountNumber}")]
string RunCalculations(string returnInformation, string accountNumber);
}
我写了一个简单的客户端,以确保一切正常,当我传入我想要的xml时,一切都在游泳。
问题在于该服务的存在是为了将我们的产品接口暴露给第三方供应商,该供应商正在开发php中的Web界面。当他尝试发出请求时,他会收到400 Bad Request错误,当WCF尝试解析他的xml时,会查看跟踪错误。
我得到的错误信息是:
Unable to deserialize XML body with root name 'BusinessTaxReturn' and root namespace '' (for operation 'RunCalculations' and contract ('IMyService', 'http://tempuri.org/')) using DataContractSerializer.
Ensure that the type corresponding to the XML is added to the known types collection of the service.
我假设WCF正在包装我的客户端发送的消息,然后在服务收到消息时尝试解包它。这让我有两个问题: