powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как в WebService вынести namespace в префикс envelope'а
3 сообщений из 3, страница 1 из 1
Как в WebService вынести namespace в префикс envelope'а
    #38059956
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Необходимо сделать сервис для приёма SOAP сообщений типа

Код: xml
1.
2.
3.
4.
5.
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://www.paysecure.ru/ws/"><soapenv:Body>
<ws:PushPaymentResult>
<merchant_id>500001</merchant_id>
<ordernumber>18062012_SDR</ordernumber>
</ws: PushPaymentResul></soapenv:Body></soapenv:Envelope>



Я сделал сервис на ASP.NET

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[WebService(Namespace = "http://www.paysecure.ru/ws/")] 
    [System.ComponentModel.ToolboxItem(false)] 
    public class PaymentAssist : System.Web.Services.WebService 
    { 
        [WebMethod()] 
        public XmlDocument PushPaymentResult(string merchant_id, string ordernumber)
         { 
                AssistResult assist = new AssistResult(merchant_id, ordernumber);
 
                return AssistResultManager.Proccess(assist); 
        } 
    } 



Но к сожалению, он принимает пакеты только в таком формате

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="utf-8"?>
<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>
    <PushPaymentResult xmlns="http://www.paysecure.ru/ws/">
      <merchantid>string</merchantid>
      <ordernumber>string</ordernumber>
     </PushPaymentResult>
  </soap:Body>
</soap:Envelope>



В заданном формате входные параметры пустые (null). Как можно настроить сервис, чтобы в Envelope задать пространство http://www.paysecure.ru/ws/, а уже внутри Body к нему обращаться через префикс?
Пробовал применять XmlSerializerNamespaces совместно с аттрибутом [XmlNamespaceDeclarations] но получилось вынести пространство в префикс только при сериализации отдельного класса, а здесь его нужно вынести в Envelope. Можно ли как-то это сделать штатными средствами вэб сервиса?
...
Рейтинг: 0 / 0
Как в WebService вынести namespace в префикс envelope'а
    #38060006
Starlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да еще, проблему решает аттрибут SoapRpcMethod для вэб метода, но мне еще нужно отдавать ответ в заданном xml формате, что с применением SoapRpcMethod практически нереально - ответ оборачивается в специальный envelope. Поэтому этот вариант отпадает.
...
Рейтинг: 0 / 0
Как в WebService вынести namespace в префикс envelope'а
    #38060626
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Starlex,

Если надо управлять форматом выходного сообщения, то, по-моему, за это отвечают атрибуты [MessageContract], [MessageHeader], [MessageBody]. Правда это справедливо для WCF служб, как с Webservices не знаю.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как в WebService вынести namespace в префикс envelope'а
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]