Question

Je suis en train d'organiser un service WCF dans un service Windows que je commence par une application de la console. Chaque service est son propre projet est l'application de la console. J'ai copié le app.config de la bibliothèque de service WCF dans le app.config de l'application de la console, mais je continue à obtenir « Service a zéro points d'extrémité d'application ... ». Je l'ai lu dans quelques endroits que l'erreur signifie que mes références de type ne sont pas pleinement qualifiés, mais j'ai double (triple, quadruple ...) a vérifié que. Et je suis sûr que j'ai un app.config. Il y a 3 exes dans mon répertoire de débogage: Console App, Console App vshost, service Win. Le Win service n'a pas eu un app.config, donc j'essayé de copier son app.config dans le cas où il cherchait, mais pas de chance. J'ai vérifié aussi pour vous assurer que les configs ont été nommés correctement ( exe.config).

Voici ce que j'utilise. Mon application de la console crée une instance de JobSchdeuler et appelle JobSchedulerConsoleStart.

Code hôte:

public partial class JobScheduler : ServiceBase
{
    ServiceHost jobServiceHost = null;

    public JobScheduler()
    {
        ServiceName = "JobSchedulerService";
        InitializeComponent();
    }

    #region Service Init/Uninit

    /// <summary>
    /// OnStart
    /// </summary>
    /// <param name="args"></param>
    protected override void OnStart(string[] args)
    {
        if (jobServiceHost != null)
        {
            jobServiceHost.Close();
        }

        jobServiceHost = new ServiceHost(typeof(JobSchedulerWCF.JobService));

        jobServiceHost.Open();
    }

    /// <summary>
    /// OnStop
    /// </summary>
    protected override void OnStop()
    {
        if (jobServiceHost != null)
        {
            jobServiceHost.Close();
            jobServiceHost = null;
        }
    }

    #endregion

    #region Debugging

    public void JobSchedulerConsoleStart()
    {
        this.OnStart(null);
        Console.WriteLine("Service Started.");

        ProcessInput();

        Console.WriteLine("Service Stopped.");
        this.OnStop();
    }

    private void ProcessInput()
    {
        Console.WriteLine("Press any key to quit...");
        Console.ReadKey();
    }

    #endregion
}

app.config

<?xml version="1.0"?>
<configuration>
    <system.serviceModel>
        <services>
            <service behaviorConfiguration="JobSchedulerWCF.Service1Behavior" name="JobSchedulerWCF.JobService, JobSchedulerWCF">
                <endpoint address="" binding="wsHttpBinding" contract="JobSchedulerWCF.IJobServiceController, JobSchedulerWCF">
                    <identity>
                        <dns value="localhost" />
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost:12345/jobService"/>
                    </baseAddresses>
                </host>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="JobSchedulerWCF.Service1Behavior">
                    <!-- To avoid disclosing metadata information, 
                        set the value below to false and remove the metadata endpoint above before deployment -->
                    <serviceMetadata httpGetEnabled="True"/>
                    <!-- To receive exception details in faults for debugging purposes, 
                      set the value below to true.  Set to false before deployment 
                      to avoid disclosing exception information -->
                    <serviceDebug includeExceptionDetailInFaults="False" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>          
</configuration>
Était-ce utile?

La solution 2

Je ne suis arrivé au bas de. Il y avait quelque chose de légèrement dans la config / projet. Je rebâti la solution et le problème a disparu.

Autres conseils

Vos fichiers de configuration sont nommés

  • Console.App.exe.config
  • Win.Service.exe.config

EDIT:. Si je me souviens bien il y avait un problème avec la version bêta de noms de WCF et le service

Essayez de changer

<service behaviorConfiguration="JobSchedulerWCF.Service1Behavior" name="JobSchedulerWCF.JobService, JobSchedulerWCF">

à

<service behaviorConfiguration="JobSchedulerWCF.Service1Behavior" name="JobSchedulerWCF.JobService">

Retirez le nom de l'assembly dans vos fichiers de configuration.

S'il vous plaît laissez-moi savoir si cela résout le problème. Je ne l'ai pas attachai.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top