I have a WCF service that is hosted in IIS 7.5. I have two servers, one for test and one for production.
The service works fine on test server, but on the production server I have the following error.
When I access the address http://..../service.svc
I can see the default page that says:
You have created a service.
To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax:
svcutil.exe http://..../service.svc?wsdl
This will generate a configuration file and a code file that contains the client class. Add the two files to your client application and use the generated client class to call the Service.
But when I click the wsdl link, I cannot go to the wsdl page. It returns me to this default web page without any errors. I am suspecting a network/firewall authorization error but does anybody have an experience like this one?
All IIS settings are the same for test and production servers.
Thank you, Best Regards.
had the same problem. i fixed it by adding httpsGetEnabled to serviceBehaviors>behavior like this:
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
maybe it helps someone else. dont think that u need this hint after 4years =)
You basically need three things to enable browsing to your WSDL for a WCF service:
So your config on the server side might looks something like this (plus a bit more stuff):
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MetadataBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MetadataBehavior" name="YourService">
<endpoint address=""
binding="basicHttpBinding"
contract="IYourService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Points 1 and 2 are handled by this line here:
<serviceMetadata httpGetEnabled="true" />
You need to reference that service behavior in your <service>
tag for it to become active.
Point 3 (MEX endpoint) is this section here:
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
For http, use the mexHttpBinding
, and the IMetadataExchange
contract is a WCF system contract for metadata exchange .
I know that answer it's so late but I had the same problem and the solution was:
Add tags [ServiceContract]
and [OperationContract]
on interface that it is implemented on service .svc
. Visual Studio create interface when you select WCF Service
but I deleted the interface and I created my own interface.
[ServiceContract]
public interface IService1
{
[OperationContract]
void DoWork();
}
I hope to help somebody.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With