I have a WCF web service hosted in IIS7 which is reporting its endpoint URL as the following in its WSDL
http://machinename/virtualdirectory/service.svc
However the actual public URL which clients need to use is actually
http://machinename.mydomain.com/virtualdirectory/service.svc
And so at the moment clients that attempt to use this web service fail unless they manually edit the endpoint URL.
I know that I can fix this by changing the bindings of the site in IIS as per HOWTO: Fix WCF Host Name on IIS however in this case the site is shared with another application which stops working if I do this and so this isn’t an option.
Is there another way that I can change the endpoint URL that WCF uses for this one virtual directory?
There are a couple of options depending on which version of WCF your service is using. If you’re using .NET 4 or higher, look at the accepted answer to this SO question. Otherwise you can either apply the hotfix that question references or if you’re really desperate, hack the metadata URL of the
httpGetUrlattribut to point to a copy of the WSDL which has been manually edited to contain the desired endpoint URL.