У меня проблема с тем, чтобы моя служба 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,Когда он пытается выдать запрос, он получает ошибку 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 упаковывает сообщение, отправленное моим клиентом, а затем пытается развернуть его, когда служба получает сообщение.Это оставляет мне два вопроса:
- Чем WCF переносит XML-сообщения?
- Как лучше всего решить эту проблему?Должен ли я просто попросить клиента обернуть его сообщение или я действительно пытаюсь использовать DataContract?