Проблема WSDL2OBJC с несоответствием адресов - PullRequest
1 голос
/ 10 июня 2011

Я создал службу Windows WCF и создал для нее WSDL.Я использую базовую http-привязку.Когда я пытаюсь вызвать это из IOS (используя сгенерированный базовый класс wsdl2objc basicHttpBinding), я получаю сообщение об ошибке при вызове одного из методов WCF.Ошибка (из logXMLInOut) утверждает, что проблема связана с несоответствием адреса, однако я не имею ни малейшего понятия о том, как отладить это и \ или что я делаю неправильно.


Вот полная ошибкасообщение:

2011-06-10 11:54:05.534 IpadWebServiceTest[10149:207] OutputHeaders:
{
    "Content-Length" = 462;
    "Content-Type" = "application/soap+xml; charset=utf-8";
    Host = "192.168.1.69";
    Soapaction = "FredIannon.TestService/IHelloIndigoService/FredContractNoParm";
    "User-Agent" = wsdl2objc;
}
2011-06-10 11:54:05.536 IpadWebServiceTest[10149:207] OutputBody:
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:HelloIndigoService="FredIannon.TestService" xmlns:tns1="http://schemas.microsoft.com/2003/10/Serialization/" xsl:version="1.0">
  <soap:Body>
    <HelloIndigoService:FredContractNoParm/>
  </soap:Body>
</soap:Envelope>
2011-06-10 11:54:05.589 IpadWebServiceTest[10149:207] ResponseStatus: 500
2011-06-10 11:54:05.590 IpadWebServiceTest[10149:207] ResponseHeaders:
{
    "Content-Length" = 615;
    "Content-Type" = "application/soap+xml; charset=utf-8";
    Date = "Fri, 10 Jun 2011 16:54:05 GMT";
    Server = "Microsoft-HTTPAPI/2.0";
}
2011-06-10 11:54:05.591 IpadWebServiceTest[10149:207] ResponseBody:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"><s:Header><a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action></s:Header><s:Body><s:Fault><s:Code><s:Value>s:Sender</s:Value><s:Subcode><s:Value>a:DestinationUnreachable</s:Value></s:Subcode></s:Code><s:Reason><s:Text xml:lang="en-US">The message with To '' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher.  Check that the sender and receiver's EndpointAddresses agree.</s:Text></s:Reason></s:Fault></s:Body></s:Envelope>

Вот приложение hosts.config

    <services>
        <service 
          behaviorConfiguration="serviceBehavior"
                 name="HelloIndigo.HelloIndigoService">

            <endpoint address="HelloIndigoService"
                      binding="basicHttpBinding"
                      bindingNamespace="FredIannon.TestService"
                      name="basicHttp"
                      contract="HelloIndigo.IHelloIndigoService" />

            <endpoint binding="mexHttpBinding"
                      name="mex"
                      contract="IMetadataExchange" />

            <host>
                <baseAddresses>
                  <add baseAddress="http://192.168.1.69:8000/HelloIndigo/HelloIndigoService" />
<!--                        <add baseAddress="http://localhost:8000/HelloIndigo/HelloIndigoService" />    -->
                </baseAddresses>
            </host>
        </service>
    </services>

1 Ответ

2 голосов
/ 10 июня 2011

Служба WCF получает ваше мыло, но не может правильно проанализировать заголовки мыла, сгенерированные прокси-сервером wsdl2objc.В этом посте хорошее описание актуальной проблемы , с которой вы столкнулись.Чтобы определить, какие заголовки требуются, начните с создания клиента .NET WCF, который успешно вызывает службу.Посмотрите, какими должны быть ожидаемые заголовки, захватив мыло, которое оно отправляет.Измените свой прокси-код, чтобы в качестве клиента .NET были указаны точные заголовки мыла.

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