WebException: сервер совершил нарушение протокола. Section = ResponseStatusLine (вызов API Marketo SOAP) - PullRequest
3 голосов
/ 25 ноября 2010

Я пытаюсь позвонить в Marketo SOAP Webservice через ASP.NET / C #. Я успешно добавил ссылку на веб-службу и попытался вызвать ее с помощью следующей строки кода:

SuccessGetLead lead = service.getLead(paramsgetlead);

Проблема в том, что я также получаю это исключение:

[WebException: сервер совершил нарушение протокола. Section = ResponseStatusLine]

System.Web.Services.Protocols.WebClientProtocol.GetWebResponse (запрос веб-запроса) + 263

System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse (запрос WebRequest) + 4

System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (String methodName, Object [] параметры) + 172

com.marketo.soap. CS: 206

_test_marketo.Page_Load (Отправитель объекта, EventArgs e) в d: \ workspace_c \ dynaweb2007_test \ marketo.aspx.cs: 48

System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Объект o, Объект t, EventArgs e) + 14

System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Отправитель объекта, EventArgs e) + 35

System.Web.UI.Control.OnLoad (EventArgs e) +99

System.Web.UI.Control.LoadRecursive () + 50

System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 627

Я также попытался добавить

<system.net>
   <settings>
       <httpWebRequest useUnsafeHeaderParsing = "true" />
   </settings>
</system.net> 

но это тоже не помогло.

Я думаю, что запрос никогда не отправляется на Marketo , но ошибка уже возникает на моем конце.

Спасибо за любую помощь или подсказку.

Ответы [ 2 ]

4 голосов
/ 27 ноября 2010

решаемая.Проблема заключалась в том, что wsdl (предоставленный Marketo) ошибочно указывал на localhost в качестве конечной точки веб-службы.Я программно устанавливаю URL через свойство WebServiceObject.Url, и теперь он работает.

3 голосов
/ 25 января 2012

Просто попробуйте использовать HTTP / 1.0 вместо HTTP / 1.1

посмотрите на следующий код

objWebRequest.ProtocolVersion = System.Net.HttpVersion.Version10;

у меня сработало; -)

...