I am working on WCF application, starting simple HelloWorld service. I have develop simple WPF application to host services, i.e. start and stop service
when I try to test this service with url "http://localhost:8087/MyServices/HelloWorldService" on WCFTestClient, I am getting following error
Error: Cannot obtain Metadata from http://localhost:8087/MyServices/HelloWorldService If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:8087/CreditUnionServices/HelloWorldService Metadata contains a reference that cannot be resolved: 'http://localhost:8087/CreditUnionServices/HelloWorldService'. <?xml version="1.0" encoding="utf-16"?><Fault xmlns="http://www.w3.org/2003/05/soap-envelope"><Code><Value>Sender</Value><Subcode><Value xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</Value></Subcode></Code><Reason><Text xml:lang="en-GB">The message could not be processed. This is most likely because the action 'http://schemas.xmlsoap.org/ws/2004/09/transfer/Get' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.</Text></Reason></Fault>HTTP GET Error URI: http://localhost:8087/CreditUnionServices/HelloWorldService There was an error downloading 'http://localhost:8087/CreditUnionServices/HelloWorldService'. The request failed with HTTP status 400: Bad Request.
<system.serviceModel>
<services>
<service name="App.Services.Managers.HelloWorldManager">
<endpoint address="HelloWorldService"
binding="wsHttpBinding"
contract="App.Services.Contracts.IHelloWorldService">
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8087/MyService"/>
</baseAddresses>
</host>
</service>
</services>
public class ServicesHostManager
{
ServiceHost _helloWorldServicesHost = new ServiceHost(typeof(HelloWorldManager));
public void ProcessHelloWorldService(string _process)
{
if(!string.IsNullOrEmpty(_process))
{
try
{
if (_process.Equals("open_service"))
{
_helloWorldServicesHost.Open();
}
else if (_process.Equals("close_service"))
{
_helloWorldServicesHost.Close();
}
}
catch (Exception e)
{
System.Windows.MessageBox.Show(e.ToString());
}
}
}
I have update code and is working now,
<system.serviceModel>
<services>
<service name="App.Services.Managers.HelloWorldManager" behaviorConfiguration="DefaultServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8087/MyService"/>
</baseAddresses>
</host>
<endpoint address="HelloWorldService" binding="wsHttpBinding" contract="App.Services.Contracts.IHelloWorldService"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultServiceBehavior">
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>