I am trying to create a WCF service for a Windows mobile smart device using a tutorial that I found. It suggested that I go the way of using
netcfSvcUtil.exe intead of SvcUtil to generate the files that I would need. After writing the tutorial, I was successful in publising my service, but when I tried to get my client to use it it gave me the following error:-
{"There was no endpoint listening at http://localhost:8000/calculator that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."} System.Exception {System.ServiceModel.EndpointNotFoundException}
The code for the service is
using System;
using System.ServiceModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OpenNETCF.WCF.Sample
{
[ServiceContract(Namespace = "http://opennetcf.wcf.sample")]
public interface ICalculator
{
[OperationContract]
int Add(int a, int b);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OpenNETCF.WCF.Sample
{
public class CalculatorService : ICalculator
{
public int Add(int a, int b)
{
Console.WriteLine(string.Format(
"Received 'Add({0}, {1})' returning {2}", a, b, a + b));
return a + b;
}
}
using
System;
using
System.ServiceModel;
using
System.ServiceModel.Description;
using
System.Net;
namespace
OpenNETCF.WCF.Sample
{
public class Server
{
protected static Uri address;
protected static ServiceHost serviceHost;
static void Main(string[] args)
{
address = new Uri("http://localhost:8000/calculator");
serviceHost =
new ServiceHost(typeof(CalculatorService), address);
serviceHost.AddServiceEndpoint(typeof(ICalculator), new BasicHttpBinding(), address);
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled =
true;
serviceHost.Description.Behaviors.Add(smb);
serviceHost.Open();
Console.WriteLine(
"CalculatorService is running at " + address.ToString());
Console.WriteLine("Press <ENTER> to terminate");
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
}
}
The following is my client.
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.ServiceModel;
using SMC = System.ServiceModel.Channels;
using System.Runtime.Serialization;
using System.Drawing;
using System.Text;
using System.Net;
using System.Windows.Forms;
namespace WCFClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
try{
localIP.Text =
Dns.GetHostEntry(
Dns.GetHostName()).AddressList[0].ToString();
}
catch (Exception ex)
{
MessageBox.Show("No NIC found?");
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("The button was clicked");
int a = 0;
int b = 0;
try
{
//a = int.Parse(localIP.Text);
//b = int.Parse(serviceAddress.Text);
a =
int.Parse(first.Text);
b =
int.Parse(second.Text);
}
catch
{
// parsing failed, just bail out
MessageBox.Show("parsing failed, just bail out");
return;
}
SMC.
Binding binding = CalculatorClient.CreateDefaultBinding();
string remoteAddress = CalculatorClient.EndpointAddress.Uri.ToString();
//remoteAddress = remoteAddress.Replace("localhost", serviceAddress.Text);
EndpointAddress endpoint = new EndpointAddress(remoteAddress);
CalculatorClient client = new CalculatorClient(binding, endpoint);
try
{
answer.Text = client.Add(a, b).ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Can someone please tell me how to solve this error...thanks