Я пытаюсь обернуть службу WCF, которая ранее была запущена в службе .asmx на панели задач, в консольное приложение.Служба WCF, работающая в ServiceHost (консольное приложение)
Вот код для подведению службы WCF:
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("http://localhost:5000");
using (ServiceHost host = new ServiceHost(typeof(CheckoutService), uri))
{
Console.WriteLine("Prepping CheckoutService server");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
host.Open();
Console.Clear();
Console.WriteLine("CheckoutService server up and running");
Console.WriteLine("Press Return to stop service at any point");
Console.ReadLine();
host.Close();
}
}
Однако, клиентское приложение, которое должно получить эту услугу (который используется для работы до того, как сервис был завернут в консольном приложение) теперь сбой с ошибкой:
There was no endpoint listening at http://localhost:5000/CheckoutService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
конфигурация конечной точки для этого клиента в app.config является:
<endpoint
address="http://localhost:5000/CheckoutService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICheckoutService"
contract="CheckoutServiceServer.ICheckoutService" name="BasicHttpBinding_ICheckoutService" />
Я думаю, что, возможно, я пропускаю какую-либо форму файла .config
в проекте консоли, на котором размещается служба WCF, но я могу ошибаться!
Ненависть к капитану Очевидна, но похоже, что служба не работает. – JayC
Вы открываете хост, очищая консоль, а затем сразу же закрываете хост ... как должен быть запущен сервис, если вы снова закроете хост? –
Да, я пропустил Console.ReadLine(), который должен был держать его открытым, однако после добавления этого я все еще получаю ту же проблему. – Moza