A: 

Make sure that you have endpoints defined without the www in your web config.

Mike
Hi Mike, Thanks for your reply. I've taken a look at this, but without result. I'll post the revised web.config for inspection shortly.
Mick N
web.config posted - no change in behaviour unfortunately
Mick N
Are the changes I made what you had in mind or would you change anything else?
Mick N
A: 

Because you're using absolute URLs as your endpoint addresses, WCF needs to see a specific host header in HTTP requests in order to bind to those addresses.

Web servers are no different; if they're configured for a specific host, the request headers must have the host name or they won't serve up content. However, multiple host names can be bound to web sites, however, so sometimes a site may be tied to both www.example.com and example.com. Also, some web browsers, if you go to example.com and get a 404 or if the DNS lookup fails, will automatically retry the request at www.example.com.

I think the easiest thing for you to do to resolve your issue is to modify your endpoint(s) so they are host neutral. For example:

<services>
  <service behaviorConfiguration="blah" name="WCFServ.EvalService">
    <endpoint address="/WCFServ/WCFServ.EvalService.svc" 
              binding="basicHttpBinding" 
              contract="WCFServ.IEvalService"/>
  </service>
</services>

<!-- Just leave this out
<serviceHostingEnvironment>
  <baseAddressPrefixFilters>
    <add prefix="http://www.abcdomain.com/WCFServ/"/&gt;
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>
-->
Jacob
Hi Jacob, Thanks for your reply. Unfortunately I can't leave out baseAddressPrefixFilters, because this solves the problem of running the service on a shared hosting server. This is apparently the accepted solution to http://stackoverflow.com/questions/561823/wcf-error-this-collection-already-contains-an-address-with-scheme-http. I'll see if I can get the address specified how you've suggested though and report back.
Mick N
The 400 Bad Request is now a 404 Server Error in '/wcfserv' Application. Requested URL: /WCFServ/WCFServ.EvalService.svc. I tried a few pathing variants in the endpoint address and baseAddressPrefixFilter. No change in successful www. result. I also tried adding an extra prefix for w/ www but this brought back "This collection already contains an address with scheme http" on www addressing.
Mick N
A: 

This page has some good explanations about WCF addressing: WCF Adressing In Depth.

Is your problem solved by adding the following attribute on your serviceclass?

[ServiceBehavior(AddressFilterMode=AddressFilterMode.Any)]
Michel van Engelen
Hi Michel, thanks for the link, it looks like an interesting read. Unfortunately the attribute alone on my service class hasn't changed the result though.
Mick N
Hmm ok. Can you implement a custom host factory to see whether your service is reached at all? Google for 'CustomHostFactory ServiceHostFactory' and find several examples. Set a breakpoint in the CreateServiceHost function, make sure to kill the worker process before you test it, it's possible that the service is already running.
Michel van Engelen