Входные параметры для веб-метода становятся нулевыми - PullRequest
0 голосов
/ 24 апреля 2019

Я создал службу asmx для существующего клиента. Служба работает нормально из пользовательского интерфейса SOAP, но при вызове из внешнего клиента входные параметры становятся нулевыми. Я попытался вызвать службу из консольного приложения с помощью httpWebRequest (без добавления ссылки на службу), проблема не устранена. Кажется, это происходит только при вызове службы через https. Как ни странно, параметры soapheader идут правильно. Клиент отправляет SoapAction как пустое и не может быть изменено, поэтому используется

[SoapDocumentMethodAttribute(Action = "")]

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Validate : System.Web.Services.WebService
{
    private WSSEDraftSecurityHeader _security;

    public WSSEDraftSecurityHeader Security
    {
        get { return _security; }
        set { _security = value; }

    }

    [WebMethod]
    [SoapDocumentMethodAttribute(Action = "")]
    [SoapHeader("Security", Direction = SoapHeaderDirection.InOut)]
    public ValidateResponse.validateResult validate(DateTime dt, string ac, string tc, string ot, string o, int sn, string bpb)
    {
    }
}

Запрос на мыло:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <s:Header> <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <o:UsernameToken u:Id="uuid-9b091270-fad3-4cf7-bef5-58b9a57ed37e-9"> <o:Username>XXXXX</o:Username> <o:Password>iiiiii</o:Password> </o:UsernameToken> </o:Security> </s:Header> <s:Body> <validate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> <ac>SN</ac> <bpb>TTFD</bpb> <o>PXPXS1</o> <ot>port</ot> <sn>0</sn> <tc>T2</tc> <dt>2019-04-17T18:50:36.3259364+08:00</dt> </validate> </s:Body> </s:Envelope>

Веб-метод вызывается и проходит проверку заголовка безопасности. Но все строковые параметры имеют нулевое значение, а один параметр даты и времени имеет дату по умолчанию 01/01/0001

.

1 Ответ

3 голосов
/ 24 апреля 2019

Возможно, проблема связана с порядком параметров в запросе Soap, поскольку они перечислены в другом порядке, чем в объявлении вашего метода. Я бы сравнил SOAP-запросы, генерируемые SoapUI и консольным приложением, а затем нашел бы различия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...