Action Not Supported Exception
Bonjour,
J'ai l'erreure suivante :
Citation:
The message with Action 'http://tempuri.org/ICollecteEnregistrement/SetServeurId' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
Pour vous situer le contexte :
J'ai un serveur d'enregistrement qui attribue une adresse à chaque nouveau serveur de collecte. Le problème c'est que je ne trouve pas d'ou vient l'erreur... Si vous avez une idée, c'est gentil de m'aider :)
Host Serveur de Collecte :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using (ServiceHost host = new ServiceHost(typeof(Collecte)))
{
host.Open();
Console.WriteLine("Serveur Collecte Started");
Console.WriteLine("Registring to Serveur Enregistrement");
using (ChannelFactory<IEnregistrement> channelFactory = new ChannelFactory<IEnregistrement>("Enregistrement"))
{
IEnregistrement proxyEnregistrement = channelFactory.CreateChannel();
proxyEnregistrement.Register();
}
Console.ReadLine();
host.Close();
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public void Register()
{
Console.WriteLine(DateTime.Now.ToLongTimeString() + " : Register new server");
string address = "net.tcp://localhost:[port]/Enregistrement";
int port = GetFreeTcpPort();
address = address.Replace("[port]", port.ToString());
_serveursDeCollecte.Add(address, 0);
using (ChannelFactory<ICollecteEnregistrement> channelFactory = new ChannelFactory<ICollecteEnregistrement>("Collecte"))
{
ICollecteEnregistrement proxyCE = channelFactory.CreateChannel();
proxyCE.SetServeurId(port);
proxyCE.SetServeurAdress(address);
}
} |
App.config serveur Enregistrement :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<system.serviceModel>
<client>
<endpoint contract="ComInterface.ICollecteEnregistrement" binding="netTcpBinding" address="net.tcp://localhost:5556/Collecte" name="Collecte"/>
</client>
<services>
<service name="ServeurEnregistrement.Enregistrement">
<endpoint contract="ComInterface.IEnregistrement" binding="netTcpBinding" address="net.tcp://localhost:5555/Enregistrement"/>
</service>
</services>
</system.serviceModel> |
App.config serveur Collecte :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<system.serviceModel>
<client>
<endpoint contract="ComInterface.IEnregistrement" binding="netTcpBinding" address="net.tcp://localhost:5555/Enregistrement" name="Enregistrement"/>
</client>
<services>
<service name="ServeurCollecte.Collecte">
<endpoint contract="ComInterface.ICollecteClient" binding="netTcpBinding" address="net.tcp://localhost:5556/Collecte"/>
</service>
</services>
</system.serviceModel> |