Служба WCF в консольном приложении выдает ошибку

Привязка BasicHttp и NetTcp, размещенная в консольном приложении

У меня есть файл web.config ниже

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="HelloService.HelloService"  behaviorConfiguration="mexBehaviour">
        <endpoint address="HelloService" binding="basicHttpBinding" contract="HelloService.IHelloService"></endpoint>
        <endpoint address="HelloService" binding="netTcpBinding" contract="HelloService.IHelloService"></endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:59084/"/>
            <add baseAddress="net.tcp://localhost:59076/"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexBehaviour">
          <serviceMetadata httpGetEnabled="True"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Интерфейс

namespace HelloService
{
    [ServiceContract]
    public interface IHelloService
    {
        [OperationContract]
        String GetMessage(String Name);
    }
}

Класс, расширяющий интерфейс

 using System.ServiceModel;
    namespace HelloService
    {
        public class HelloService : IHelloService
        {
            public string GetMessage(string Name)
            {
                return "Hello " + Name;
            }
        }
    }

и код консольного приложения для хостинга

using System.ServiceModel;

namespace HelloServiceHost
{
    class Program
    {
        static void Main()
        {
            using(ServiceHost host  = new ServiceHost(typeof(HelloService.HelloService)))
            {
                host.Open();
                Console.WriteLine("Host Started");
                Console.ReadLine();
            }
        }
    }
}

Я получаю сообщение об ошибке ниже, когда пытаюсь запустить консольное приложение

HTTP could not register URL http://+:8080/. Your process does not have
access rights to this namespace (see
http://go.microsoft.com/fwlink/?LinkId=70353 for details).
  • Я попробовал другой номер порта, например 53895, думая, что порт 8080 может быть занят. Не повезло!!
  • Когда я просмотрел эту ошибку, я узнал об этой проблеме из-за того, что моя учетная запись не является администратором. Теперь я сомневаюсь, что клиент WCFTest также выполняется под моей учетной записью. Как он может запустить аналогичный код, а я не могу?

    Также будут приняты любые предложения по выполнению этой работы. Может быть опять что то делать с Webconfig ??

Заранее спасибо за помощь!!


person Ramu    schedule 11.06.2014    source источник
comment
В своем вопросе вы говорите о web.config, но в консольном приложении у вас должен быть app.config   -  person Uriil    schedule 11.06.2014
comment
@Uriil: Извини, дружище, это сам файл app.config. Спасибо   -  person Ramu    schedule 11.06.2014
comment
Проверьте это stackoverflow.com/questions/885744/   -  person Uriil    schedule 11.06.2014


Ответы (1)


Ваш код выглядит нормально. Я попробовал, и все работает. Попробуйте решение здесь: https://stackoverflow.com/questions/8727293/http-could-not-register-url-http-8000-hellowcf-your-process-does-not-have

По сути, он говорит вам закрыть IDE Visual Studio и открыть ее, щелкнув правой кнопкой мыши «Запуск от имени администратора».

person Aditya Patil    schedule 12.06.2014
comment
Я не могу запустить VS IDE в режиме администратора, у меня нет прав администратора. Я принял ответ и просто посмотрел, смогу ли я что-нибудь исправить. Спасибо тебе, друг - person Ramu; 17.06.2014
comment
@ Раму, извини, что проблема не исчезла. Если вы сможете доказать им, что это вызывает у вас проблему, они могут ослабить права администратора. - person Aditya Patil; 17.06.2014
comment
Да имеет смысл, приятель. я просто тестировал приложение. На самом деле мне нужно разместить его в IIS. просто тестирую, размещая его в консольном приложении. Спасибо :) - person Ramu; 17.06.2014