Сообщение SOAP содержит дополнительный тег после генерации из WSCF Blue в Visual Studio 2008 - PullRequest
0 голосов
/ 05 августа 2010

Я использую Visual Studio 2008 для написания простого веб-сервиса, но столкнулся с некоторыми проблемами.Вам может потребоваться отформатировать мой

Полное ожидаемое сообщение выглядит примерно так:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace    = "http://www.website.com/WS/"
               elementFormDefault = "qualified"
               xmlns              = "http://www.website.com/WS/"
               xmlns:xs           = "http://www.w3.org/2001/XMLSchema"           
    >
      <xs:element name="QUERYFOOTBALL">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="KEY" minOccurs="1" maxOccurs="1" type="xs:string" />
              <xs:element name="FOOTBALL">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="HEADER" maxOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="TEAM_ID" minOccurs="1" maxOccurs="1" type="xs:string" />
                          <xs:element name="MATCH_ID"    minOccurs="1" maxOccurs="1" type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="GAME" maxOccurs="1">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="ONE" minOccurs="1" maxOccurs="1" type="xs:string" />
                          <xs:element name="TWO"    minOccurs="1" maxOccurs="1" type="xs:string" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>

Однако, когда я генерирую сервис, макет / вызов SOAP-сообщения выглядит так

<?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>
        <QueryFootball xmlns="http://www.website.com/WS/">
          <QUERYFOOTBALL>
            <KEY>string</KEY>
            <FOOTBALL>
              <HEADER>
                <TEAM_ID>string</TEAM_ID>
                <MATCH_ID>string</MATCH_ID>
              </HEADER>
              <GAME>
                <ONE>string</ONE>
                <TWO>string</TWO>
              </GAME>
            </FOOTBALL>
          </QUERYFOOTBALL>
        </QueryFootball>
      </soap:Body>
    </soap:Envelope>

Мой действительный код C # выглядит следующим образом:

namespace FootballSimulator
{   
        [System.ServiceModel.ServiceBehaviorAttribute(InstanceContextMode=System.ServiceModel.InstanceContextMode.PerCall, ConcurrencyMode=System.ServiceModel.ConcurrencyMode.Single)]
        public class FootballSimulator : IFootballSimulator
        {

            public virtual QUERYFOOTBALLRESPONSE QUERYFOOTBALL(QUERYFOOTBALL request)
            {
                throw new System.NotImplementedException();
            }        
        }
}

Наверное, мой вопрос заключается в том, как я могу отредактировать Schema / WSCFBlue, чтобы он не вызывал этого лишнего в запросе SOAP?

Буду очень признателен за любые советы / рекомендации, которые вы можете дать.Я могу дать вам общее представление о том, что я сделал:

  1. В Visual Studio я щелкнул правой кнопкой мыши свои 2 схемы (запрос и ответное сообщение) и выбрал WSCFblue, затем Создать описание интерфейса WSDL
  2. Iвыбрал правильные схемы / порты и дал им сообщение с именем QUERYFOOTBALL и сообщением с именем QUERYFOOTBALLRESPONSE
  3. Я щелкнул правой кнопкой мыши WSDL, созданный на предыдущих этапах, и выбрал WSCFblue, затем сгенерировать код контракта данных (что делает и дает мне мои объекты QUERYFOOTBALL и QUERYFOOTBALLRESPONSE)
  4. Я щелкнул правой кнопкой мыши по WSDL и выбрал WSCFblue, затем сгенерировал код веб-службы

Если есть что-то очевидное, что я делаю неправильноЯ был бы очень признателен, если бы вы могли показать мне, что это такое.Похоже, что имя метода является причиной добавления дополнительного тега к ожидаемому сообщению мыла.В моей схеме после того, как элементом QUERYFOOTBALL является другой элемент с именем KEY, по этой причине я не могу просто извлечь QUERYFOOTBALL и создать объект с именем "FOOTBALL".

Я хочу, чтобы веб-сервис принимал следующее:

    <?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>
       <QUERYFOOTBALL>
         <KEY>string</KEY>
         <FOOTBALL>
           <HEADER>
             <TEAM_ID>string</TEAM_ID>
             <MATCH_ID>string</MATCH_ID>
           </HEADER>
           <GAME>
                <ONE>string</ONE>
                <TWO>string</TWO>
              </GAME>
            </FOOTBALL>
          </QUERYFOOTBALL>
      </soap:Body>
    </soap:Envelope>

Очень ценю любую помощь, которую вы можете оказать, с нетерпением ждем ваших впечатлений / мнений / советов

1 Ответ

0 голосов
/ 05 февраля 2011

Лучше поздно, чем никогда ....

Попробуйте добавить это в свой веб-метод:

[SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Bare)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...