Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8017999
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 4, 20262026-06-04T21:00:20+00:00 2026-06-04T21:00:20+00:00

I am trying to implement a web service that accepts SOAP 1.2 over HTTP

  • 0

I am trying to implement a web service that accepts SOAP 1.2 over HTTP using WCF. Unfortunately I have to work with legacy clients that do not send an action parameter as part of the HTTP header. This seems to be causing issues with WCF, which (by default at least) seems unable to route requests to the appropriate place without the action.

I have created a binding based on BasicHttpBinding but with the MessageVersion set to MessageVersion.Soap12, which I thought would remove the requirement to use WS-Addressing.

I then overloaded ApplyDispatchBehaviour in IContractBehavior to set DispatchRuntime.OperationSelector to a custom implementation of IDispatchOperationSelector that selects the correct operation based on the contents of the SOAP body (basically the approach used in this MSDN article)

By default this does not seem to work, and the SelectOperation function is not called when a request is made.

However if I add in a dummy operation with an empty action to my contract, like so:

[OperationContract( Action = "" )]
void DoNothing();

then suddenly SelectOperation begins to be called and my code works as expected. It seems like I’ve been unsuccessfully in making WCF no longer require the action header – I have just stopped the action header being used to directly map to operations. However, since the contract is generated from a .wsdl file it seems like an awful big hack to edit it in order to get things to work.

So my question is this: How can I go about accepting SOAP 1.2 requests without an action header using WCF? Unless I’m mistaken the SOAP 1.2 specification does not require an action header, so surely there is some way to implement this with WCF without resorting to hacking the contract?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-04T21:00:22+00:00Added an answer on June 4, 2026 at 9:00 pm

    I just managed to figure the answer to this question out today. It turns out that the EndpointDispatcher being used had an ActionMessageFilter as it’s ContractFilter and this was filtering out messages based on the action.

    After I updated the ContractFilter to a MatchAllMessageFilter, then all messages were passed through to my IDispatchOperationSelector where they could be selected based on the contents of the SOAP body.

    The code I used to do this was in IContractBehavior.ApplyDispatchBehaviour:

    foreach(
        var endpointDispatcher in
        dispatchRuntime.ChannelDispatcher.Endpoints
        )
    {
        endpointDispatcher.ContractFilter = new MatchAllMessageFilter();
    }
    

    I may update to use a more appropriate filter than MatchAllMessageFilter in the future, but for now it is doing the job.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Background I am trying to implement a RESTful web service using Apache-CXF that interacts
I'm trying to implement a stateful web service in PHP using the SOAP extension.
I am trying to implement a web service that uses open JPA to access
I'm trying to implement a very simple WCF service that returns JSON. I'm trying
I'm trying to make a WCF service that will work with JSON-P (long-story short,
I have a new web service I'm trying to implement... when I run it
I have been trying to find a way to implement a RESTful web service
I am trying to implement web services that use different security mechanisms to do
I'm getting started in developing web services using JAX-WS. I'm trying to implement classes
I’m trying to implement a SOAP webservice in Python 2.6 using the suds library.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.