5

I am trying to consume a webservice in C#. Whenever i try to call the function from the web service class I am getting a "SOAP header Action was not understood".I've added web reference[not service reference] pointing the web service in my project. The following steps were taken to add the web reference

1) right click on the project -> Add WebReference

when i examined the web service in web browser i found this in the header

<wsdl:definitions name="MyService" targetNamespace="http://tempuri.org/">
    <wsp:Policy wsu:Id="WSHttpBinding_ICAIService_policy">
        <wsp:ExactlyOne><wsp:All><sp:TransportBinding>
    <wsp:Policy>

I've done the following code to call the web service functions

WebStruct webS = new WebStruct();
webS.Name = "Peter";
webS.ID = 22;

webS.Find(webS);
John Saunders
  • 160,644
  • 26
  • 247
  • 397
logeeks
  • 4,849
  • 15
  • 62
  • 93
  • 1
    How are `wsHttpBinding` and `webHttpBinding` related to your question? Web reference uses older ASMX API and it doesn't support services exposed on these bindings. Actually `webHttpBinding` is not supported by Add service reference as well. – Ladislav Mrnka May 18 '11 at 21:19

4 Answers4

5

Remove the Web Reference and add a Service Reference instead.

Anthony Faull
  • 17,549
  • 5
  • 55
  • 73
3

Try to use simple service endpoint binding BasicHttpBinding. This binding is compatible with .NET 2.0.

Milan Matějka
  • 2,654
  • 1
  • 21
  • 23
0

SoapAction errors only went away when I went into the "Configure Service Reference..." properties and updated the Service Reference with these options ticked.

and ticked these two boxes:

TICK Generate asynchronous operations TICK Always generate message contracts

hamish
  • 1,141
  • 1
  • 12
  • 21
0

Can you check with your webservice provider? Seems they need some customized header information to process your request. Adding such headers by the service providers are very much common to increase the security.

Shailesh
  • 1,178
  • 11
  • 12