Проблема после обучения Microsoft WCF - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь следовать учебному руководству Microsoft WCF и сейчас на этом шаге: http://msdn.microsoft.com/en-us/library/ms733133.aspx

К сожалению, когда я запускаю эту команду:

svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service

, она выдает ошибку 404.Служба работает, и я могу успешно связаться с ней через веб-браузер, перейдя по адресу: http://localhost:8000/ServiceModelSamples/service

Что я делаю не так?Если это поможет, я разместил весь код для примера хоста, который я использую ниже.

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

namespace Microsoft.ServiceModel.Samples
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri BaseAddress = new Uri("http://locoalhost:8000/ServiceModelSamples/Service");
            ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), BaseAddress);

            try
            {
                selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");
                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;
                selfHost.Description.Behaviors.Add(smb);

                selfHost.Open();
                Console.WriteLine("The service is ready.");
                Console.WriteLine("Press <ENTER> to terminate service.");
                Console.WriteLine();
                Console.ReadLine();
                selfHost.Close();
            }
            catch (CommunicationException ce)
            {
                Console.WriteLine("An expection occurred: {0}", ce.Message);
                selfHost.Abort();
            }
        }

        [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);
        }

        public class CalculatorService : 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;
            }
        }
    }
}

1 Ответ

2 голосов
/ 14 февраля 2012

Первое, что неправильно, у вас есть опечатка localhost (у вас есть locoalhost)

Uri BaseAddress = new Uri("http://locoalhost:8000/ServiceModelSamples/Service");

Вы также можете скачать fiddler @ http://fiddler2.com/fiddler2/, чтобы увидеть трафик и запросы, сделанные из кода клиента. это даст следующую подсказку. Это необходимо при поиске и устранении неисправностей служб http.

http://fiddler2.com/fiddler2/

Кроме того, убедитесь, что ваш конфиг в порядке. См .: http://msdn.microsoft.com/en-us/library/ms734663.aspx

...