none
Ссылка на wcf службу RRS feed

  • Вопрос

  • Здравствуйте. Начал изучать wcf и пытаюсь воспроизвести простейший пример отсюда:

    http://msdn.microsoft.com/ru-ru/library/ms734712.aspx

    Застрял на четвёртом шаге (Как создать клиент wcf). Пытался добавить ссылку на службу калькулятора, предварительно запустив GettingStartedHost. Соответствующий пункт контекстного меню в Visual Studio Express 2013 Preview for Desktop оказался недоступен (неактивен). Работаю в Windows 7 Домашняя базовая с учётной записью администратора. Подскажите, в чём может быть ошибка.

    Код прилагаю ниже:

    Проект GettingStartedClient, файл Program.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;



    namespace GettingStartedClient
    {
        class Program
        {
            static void Main(string[] args)
            {
            }
        }
    }

    Проект GettingStartedHost файл Program.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
    using GettingStartedLib;
    using System.ServiceModel.Description;

    namespace GettingStartedHost
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Step 1 Create a URI to serve as the base address.
                Uri baseAddress = new Uri("http://localhost:8000/GettingStarted/");

                // Step 2 Create a ServiceHost instance
                ServiceHost selfHost = new ServiceHost(typeof(Service1), baseAddress);

                try
                {
                    // Step 3 Add a service endpoint.
                    selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");

                    // Step 4 Enable metadata exchange.
                    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                    smb.HttpGetEnabled = true;
                    selfHost.Description.Behaviors.Add(smb);

                    // Step 5 Start the service.
                    selfHost.Open();
                    Console.WriteLine("The service is ready.");
                    Console.WriteLine("Press <ENTER> to terminate service.");
                    

                    Console.ReadLine();

                    // Close the ServiceHostBase to shutdown the service.
                    selfHost.Close();
                }
                catch (CommunicationException ce)
                {
                    Console.WriteLine("An exception occurred: {0}", ce.Message);
                    selfHost.Abort();
                }
            }
        }
    }

    Service1.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;

    namespace GettingStartedLib
    {
      public class Service1:ICalculator
        {
            public double Add(double n1, double n2)
            {
                double result = n1 + n2;
                Console.WriteLine("Received Add({0},{1})", n1, n2);
                // Code added to write output to the console window.
                Console.WriteLine("Return: {0}", result);
                return result;
            }

            public double Subtract(double n1, double n2)
            {
                double result = n1 - n2;
                Console.WriteLine("Received Subtract({0},{1})", n1, n2);
                Console.WriteLine("Return: {0}", result);
                return result;
            }

            public double Multiply(double n1, double n2)
            {
                double result = n1 * n2;
                Console.WriteLine("Received Multiply({0},{1})", n1, n2);
                Console.WriteLine("Return: {0}", result);
                return result;
            }

            public double Divide(double n1, double n2)
            {
                double result = n1 / n2;
                Console.WriteLine("Received Divide({0},{1})", n1, n2);
                Console.WriteLine("Return: {0}", result);
                return result;
            }
        }
    }

    IService1.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;


    namespace GettingStartedLib
    {
        [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
        public interface ICalculator
        {
            [OperationContract]
           double Add(double n1, double n2);
            [OperationContract]
             double Subtract(double n1, double n2);
            [OperationContract]
             double Multiply(double n1, double n2);
            [OperationContract]
             double Divide(double n1, double n2);
        }
    }

    Спасибо.

    12 августа 2013 г. 11:15

Ответы

Все ответы