2009-04-14 3 views
0

Итак, я пытаюсь использовать мыло для связи с веб-сервисом и получения ошибок. Что вызывает разочарование в этой конкретной проблеме, так это то, что она отлично работает с моей локальной копией веб-сервиса (да, я пытался отключить брандмауэр) и отлично работал с предыдущей версией веб-сервиса и клиента. Я подозреваю, что могу (хотя мне придется искать, как это сделать) добавить параметр действия к тому, что клиент отправляет. Тем не менее, мне очень любопытно, почему он смог работать ранее без него.Отказ от мыла

Редактировать Разъяснение: Я думаю соответствующий код был то же между тем, когда он перестал работать, и когда он работал (так как я проверил против старой версии программы и имел те же проблемы, и соответствующий код был то же ... если я не пропустил что-то тонкое). I знаю Фактическая серверная программа одинакова как на локальной копии, так и на удаленной копии, хотя она работает только локально. Поэтому я подозреваю, что существует какая-то странная настройка конфигурации, которую я могу изменить, чтобы заставить ее работать.

Сообщение об ошибке: «soap: ClientUnable для обработки запроса без действительного параметра действия. Пожалуйста, поставьте действительное действие мыла».

VB код клиента

'WEB_SERVICE_URL_CONST = http://site.com/foo.asmx 
'domDoc.xml = <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><TestConnection xmlns="http://site.com"/></soap:Body></soap:Envelope> 

Dim oXml As New XMLHTTPRequest 
oXml.Open "POST", WEB_SERVICE_URL_CONST, False, "\" 
oXml.setRequestHeader "Content-Type", "text/xml" 
oXml.send domDoc.xml 

C# код сервера

[WebMethod] 
     public int TestConnection() 
     { 
      return 1; 
     } 

ответ

0

Проблема была с кодом xmlns="http://site.com". Когда я тестировал локально, я использовал xmlns="http://localhost" по ошибке. Фактически, это не должно быть изменено на клиенте или сервере (на сервере это будет WebService(Namespace =...)), независимо от того, где я тестирую ... но если он изменится, клиент и сервер должны соответствовать.

0

Вы уверены, что первые две строки не закомментированная в реальной версии? Образец кода, похоже, не имеет значения для WEB_SERVICE_URL_CONST и domDoc.xml, а пустой запрос Soap действительно не указывает никаких действий?

EDIT: Я считаю, что «используется для работы с предыдущей версией веб-сервиса и клиента» немного запутанным. Если вы действительно изменили как клиент, так и сервер, то какая часть не изменилась?

+0

Пронумерованные строки не существуют в реальной версии: они были добавлены, чтобы предоставить контекст, который не содержит код примера. Я подтвердил, что значения были тем, что я сказал, что они были во время выполнения, хотя URL-адреса в обоих местах являются поддельными. – Brian

Смежные вопросы