У меня проблемы с запуском службы WCF с помощью консольного приложения. Что может быть не так? - PullRequest
0 голосов
/ 20 апреля 2010

Вот мой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using BankServiceClient.BankServiceReference;

namespace BankServiceClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri baseAddress = new Uri("http://localhost:8000/Simple");
            Type instanceType = typeof(BankServiceReference.BankClient);
            ServiceHost host = new ServiceHost(instanceType,baseAddress);

            using (host)
            {
                Type contractType = typeof(BankServiceReference.IBank);
                string relativeAddress = "BankService";
                host.AddServiceEndpoint(contractType, new BasicHttpBinding(), relativeAddress);

                host.Open();

                Console.WriteLine("Press <ENTER> to quit.");
                Console.ReadLine();

                host.Close();
            }

            /*
             * Consuming a WCF Service and using its method.
             */

            //IBank proxy = new BankClient();

            //double number = proxy.GetBalance(1234);

            //Console.WriteLine(number.ToString());
            //Console.ReadLine();
        }
    }
}

Сначала пара вопросов:

  1. Атрибут 'baseAddress', что именно это это? Когда я запустил свой сервис, используя F5 по умолчанию (без консольного приложения), сервис запустился на случайном порте localHost. Как я могу написать точное число и ожидать, что оно пойдет туда? Запутался в этом.

  2. Что является атрибутом absoluteAddress? Там написано BankService, но что я должен написать в этом атрибуте? Смущен и этим.

Вот точное сообщение об ошибке, которое я получаю при попытке запустить это консольное приложение:

HTTP не может зарегистрировать URL http://+:8000/Simple/. Ваш процесс не имеет прав доступа к этому пространство имен (см. http://go.microsoft.com/fwlink/?LinkId=70353 для деталей).

1 Ответ

0 голосов
/ 20 апреля 2010

Во-первых, настроен ли ваш клиентский проект для запуска?

И ответить на ваши вопросы.

1) baseAddress ( URI Class ) - это базовый адрес для вашей размещенной службы. Я думаю, что вы запускаете какой-то другой проект.

2) У вас есть два варианта настройки конечных точек ( ссылка ). Относительно и Абсолют. То, как вы это сделали, займет вашу базу и добавит вашего родственника -> http://localhost:8000/Simple/BankService

И, наконец, чтобы решить проблему с хостингом, смотрите эту ссылку SO:

WCF ServiceHost прав доступа

...