Служба самостоятельного хостинга WCF запускает ConsoleApp.exe не работает, но внутри vs2012 хорошо

у меня возникла проблема с noopy, если я запускаю собственную службу WCF (WCF-сервис Lib + консольное приложение) внутри VS, все работает нормально. если я хочу запустить consoleapplication.exe в каталоге проекта, похоже, что все работает нормально, но это не так. (я новичок в С#)

Я тестировал: запустить его от имени администратора (брандмауэр выключен и включен), чтобы зарезервировать мою услугу через http urlacl

Работает нормально означает, что я могу получить доступ к моему сервису удаленно. Не работает нормально означает, что я не могу получить к нему доступ через локальный хост.

Отсутствуют какие-либо зависимости?

Заранее спасибо!

App.config консольного приложения:

    <system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="NewBehavior">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"
                    policyVersion="Default" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="NewBehavior" name="SampleEmpServiceLib.EmpService">
            <clear />
            <endpoint address="basic" binding="basicHttpBinding" contract="SampleEmpServiceLib.IEmpService"
                listenUriMode="Explicit" />
            <endpoint address="http://localhost:8060/EmpS" binding="wsDualHttpBinding" bindingConfiguration=""
                contract="SampleEmpServiceLib.IEmpService" listenUriMode="Explicit" />
            <endpoint address="net.tcp://localhost:8888/EmpS" binding="netTcpBinding"
                contract="SampleEmpServiceLib.IEmpService" listenUriMode="Explicit" />
            <endpoint address="net.pipe://localhost/EmpS" binding="netNamedPipeBinding"
                contract="SampleEmpServiceLib.IEmpService" listenUriMode="Explicit" />
            <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
                contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:8080/EmpS/" />
                </baseAddresses>
            </host>
        </service>
    </services>
</system.serviceModel>

Код программы.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using SampleEmpServiceLib;
using System.ServiceModel.Description;
namespace ConsoleApplication
{
class Program
{
    static void Main(string[] args)
    {
        ServiceHost host = new ServiceHost(typeof(EmpService));

        host.Open();
        Console.WriteLine("running on endpoints:");
        foreach (ServiceEndpoint serviceEndpoint in host.Description.Endpoints)
            Console.WriteLine(serviceEndpoint.Address.ToString());

        Console.WriteLine("running");
        Console.ReadLine();
        host.Close();
    }
}

}


person Matthias -_-    schedule 22.05.2013    source источник
comment
Вы просто запускаете consoleapplication.exe, найденный в projectdir\bin\debug\consoleapplication.exe?   -  person Belogix    schedule 22.05.2013
comment
джеп я делаю. Я запускаю только projectdir\bin\debug\consoleapplication.exe   -  person Matthias -_-    schedule 22.05.2013
comment
можем ли мы увидеть ваш раздел ServiceModel из конфигурации   -  person paramosh    schedule 22.05.2013
comment
хорошо, похоже, базовый адрес нужно передать конструктору ServiceHost. Не могли бы вы показать код, как вы запускаете службу?   -  person paramosh    schedule 22.05.2013


Ответы (1)


Могу предложить некоторые обновления конфига:

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="NewBehavior">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"
              policyVersion="Default" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="NewBehavior" name="SampleEmpServiceLib.EmpService">
        <clear />
        <endpoint binding="basicHttpBinding" contract="SampleEmpServiceLib.IEmpService" listenUriMode="Explicit" />
        <endpoint address="dual" binding="wsDualHttpBinding" bindingConfiguration="" contract="SampleEmpServiceLib.IEmpService" listenUriMode="Explicit" />
        <endpoint binding="netTcpBinding" contract="SampleEmpServiceLib.IEmpService" listenUriMode="Explicit" />
        <endpoint binding="netNamedPipeBinding" contract="SampleEmpServiceLib.IEmpService" listenUriMode="Explicit" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/EMPS" />
            <add baseAddress="net.tcp://localhost:8888/EMPS" />
            <add baseAddress="net.pipe://localhost/" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
person paramosh    schedule 22.05.2013
comment
моя проблема все еще там ... в каком отношении стоит приложение. config моей служебной библиотеки в app.config моей консоли? особенно мои конечные точки - person Matthias -_-; 22.05.2013
comment
если я правильно понял, то нет никакой связи, у вас есть только один app.config для приложения, которое вы запускаете. Это означает, что вы должны скопировать servicemodel в консоль app.config. - person paramosh; 22.05.2013
comment
ха ты ПАРЕНЬ!!!! мне нужно было только удалить мой app.config из моей служебной библиотеки :) большое спасибо !!! так как я настроил свой consoleapp app.config, я получил ответ, но без какой-либо информации об услуге. в этом была проблема ... потому что vshost запустил службу, а также консольное приложение, и поэтому я получаю свою службу через конечные точки моей библиотеки служб: P моя ошибка. - person Matthias -_-; 22.05.2013