WCF InvalidOperationException: Eine verbindliche Instanz hat bereits in Verbindung gebracht worden zu hören, URI

Ich bin ein Anfänger der WCF und ich studiere im Wesentlichen WCF.

Stieß ich auf ein problem bei der Verwendung von ServiceContract NameSpace und den Namen.
wenn ich den code ausführen, ich Fang unten InvalidOperationException. Aber ich konnte es nicht klar verstehen.

Eine verbindliche Instanz hat bereits in Verbindung gebracht worden zu hören, URI 'http://localhost:8080/NamespaceChange01'. Wenn zwei Endpunkte teilen wollen, die gleichen ListenUri, müssen Sie auch die gleiche binding-Objekt-Instanz. Die beiden entgegengesetzten Endpunkte wurden entweder angegeben in AddServiceEndpoint () - Aufrufe, die in einer config-Datei, oder eine Kombination von AddServiceEndpoint() und config.

Wer weiß, wie avide der InvalidOperationException ?

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

namespace NamespaceChange01
{

    [ServiceContract(Name = "MyServiceName", Namespace = "http://ServiceNamespace")]
    public interface IBurgerMaster
    {
        [return: MessageParameter(Name = "myOutput")]
        [OperationContract(Name = "OperationName", Action = "OperationAction", ReplyAction = "ReplyActionName")]
        double GetStockPrice(string ticker);
    }

    [ServiceBehavior(Namespace = "http://MyService")]
    public class BurgerMaster : IBurgerMaster
    {

        public double GetStockPrice(string ticker)
        {
            return 100.99;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ServiceHost host = new ServiceHost(typeof(BurgerMaster));
            host.Open();
            Console.ReadLine();
            host.Close();
        }
    }
}
  • app.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name="NamespaceChange01.BurgerMaster" behaviorConfiguration="mexServiceBehavior">
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8080/NamespaceChange01"/>
              </baseAddresses>
            </host>
            <endpoint name="basic" binding="basicHttpBinding" contract="NamespaceChange01.IBurgerMaster"/>
            <endpoint name="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="mexServiceBehavior">
              <serviceMetadata httpGetEnabled="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>

Dank.

InformationsquelleAutor Shingo Tada | 2012-07-16
Schreibe einen Kommentar