2013-05-22 2 views
1

У меня возникла проблема с noopy, если я запускаю самодоступное WCF-сервис WCF-сервиса Lib + консольное приложение внутри VS, все работает нормально. Если я хочу запустить consoleapplication.exe в каталоге проекта, похоже, все работает нормально, но это не так. (I'm нового для C#)WCF сам хостинг Запуск службы ConsoleApp.exe не работает, но внутри vs2012 хорошо

I`ve испытываться: , чтобы запустить его в качестве администратора (брандмауэр выключен и) к reservate моей службы urlacl

через HTTP работает отлично, означает, что я могу получить доступ к моей службе удаленно. Работает не очень хорошо, что я не evan может получить к нему доступ через localhost.

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

Заранее благодарю вас!

App.config из consoleApp:

<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> 

Кодекса Program.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(); 
    } 
} 

}

+0

Вы просто используете консоль cation.exe найдено в ** projectdir \ bin \ debug \ consoleapplication.exe **? – Belogix

+0

jep я делаю. Я запускаю только projectdir \ bin \ debug \ consoleapplication.exe –

+0

, мы можем видеть ваш раздел ServiceModel из config – paramosh

ответ

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> 
+0

теперь я настроил свой app.config thx! –

+0

моя проблема все еще там ... в каком отношении стоит приложение. config моей службы lib в app.config моей консоли? особенно мои конечные точки –

+1

, если я правильно понял, чем нет никакого отношения, у вас есть только один app.config для приложения, которое вы используете. Это означает, что вы должны скопировать servicemodel в консоль app.config – paramosh