Service Stack Serialization Exception for soap 1.1

我的梦境 提交于 2019-12-07 20:14:26

Below is my (simplified) attempt at your Service. It ignores 'namespace' but there is more information here. I am able to receive a successful response using Soap UI.

SoapUI setup:

Endpoint - http://localhost:1337/soap11

Request Message: (copied from ServiceStack Metadata page)

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
<SendGetAccountNotification xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ServiceStackWinForm">
  <Account>
    <BusOpsDesc>String</BusOpsDesc>
    <ExternalAccountId>12345</ExternalAccountId>
  </Account>
  <ExternalAccountID>String</ExternalAccountID>
  <Message>String</Message>
</SendGetAccountNotification>
    </soap:Body>
</soap:Envelope>

ServiceStack Code:

Account class (part of request):

[DataContract]
public class Account
{
    [DataMember]
    public string BusOpsDesc { get; set; }
    [DataMember]
    public string ExternalAccountId { get; set; }
}

Request class

[DataContract]
[Route("/SendGetAccountNotification")]
public class SendGetAccountNotification
{
    [DataMember]
    public Account Account { get; set; }
    [DataMember]
    public string ExternalAccountID { get; set; }
    [DataMember]
    public string Message { get; set; }
}

Response class with matching naming convention

[DataContract]
public class SendGetAccountNotificationResponse : IHasResponseStatus
{
    [DataMember]
    public String Result { get; set; }
    [DataMember]
    public ResponseStatus ResponseStatus { get; set; }
}

Service

public class SendGetAccountResponseService : Service
{
    public SendGetAccountNotificationResponse Any(SendGetAccountNotification request)
    {
        Console.WriteLine("Reached");
        return new SendGetAccountNotificationResponse() {Result = "Success for Account " + request.Account.ExternalAccountId};
    }
}

I had the same kind of issue, I had to modify the request. I can't understant why, but I had to remove the prefix. Try this:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
  <SendGetAccountNotification xmlns="http://www.w3.org/2001/XMLSchema-instance" xmlns="mynamespace">
     <getAccountResponse>
        <Account>
           <BusOpsDesc>String</BusOpsDesc>
           <ExternalAccountID>String</ExternalAccountID>
        </Account>
        <ExternalAccountID>String</ExternalAccountID>
        <Message>String</Message>
     </getAccountResponse>
  </SendGetAccountNotification>
</soap:Body>
</soap:Envelope>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!