eccezione mancata corrispondenza SharePoint Application Service contractFilter
-
22-10-2019 - |
Domanda
Questo è il mio primo tentativo di ServiceApplication e sono molto nuovo con l'idea. Stavo usando il codice di esempio WingtipCalc trovato qui http://msdn.microsoft.com/ it-it / library / gg543112.aspx ho avuto nessun problema a trovare le funzioni della calcolatrice al lavoro, ma poi ho cercato di modificare in modo che avrebbe ricevuto un filepath piuttosto che due interi e in uscita il contenuto di tale file in una stringa in contrasto con la somma o la sottrazione dei due interi (il file è un documento XML). Ho aggiunto i metodi necessari che sono stati sostanzialmente modificati versioni del Add e metodi Sottrarre e sembrava essere in esecuzione bene fino a quando ha ottenuto il delegato ExecuteOnChannel. Ho ricevuto questo errore:
Il messaggio con azione 'http://tempuri.org/IWingtipCalcContract/ViewXdoc' non può essere elaborato al ricevitore, a causa di una mancata corrispondenza ContractFilter al EndpointDispatcher. Questo può essere causa di una mancata corrispondenza del contratto (azioni non corrispondenti tra il mittente e il destinatario) o un / mancata corrispondenza di sicurezza vincolante tra il mittente e il destinatario. Controllare che mittente e destinatario hanno lo stesso contratto e le stesse (requisiti di sicurezza, tra cui, ad esempio, messaggio, Trasporti, None) vincolante.
Ecco il metodo che la lanciò:
private void ExecuteOnChannel(string operationName, CodeToRunOnChannel codeBlock)
{
SPServiceLoadBalancerContext loadBalancerContext = _loadBalancer.BeginOperation();
try
{
// get a channel to the service app endpoint
IChannel channel = (IChannel)GetChannel(loadBalancerContext.EndpointAddress);
try
{
// execute the code block
codeBlock((IWingtipCalcContract)channel);
channel.Close();
}
catch (TimeoutException)
{
loadBalancerContext.Status = SPServiceLoadBalancerStatus.Failed;
throw;
}
catch (EndpointNotFoundException)
{
loadBalancerContext.Status = SPServiceLoadBalancerStatus.Failed;
throw;
}
finally
{
if (channel.State != CommunicationState.Closed)
channel.Abort();
}
}
finally
{
loadBalancerContext.EndOperation();
}
}
In particolare questa linea:
codeBlock((IWingtipCalcContract)channel);
Vorrei poter fornire più informazioni, ma come ho detto sono molto nuovo a questo. Qualsiasi aiuto sarebbe apprezzato. Grazie!
Soluzione
I disattivata la funzione, ritratta e rimossa la soluzione poi riavviato il computer e ha funzionato bene.
Credo che quello che è successo era il vecchio contratto di servizio era ancora nel GAC. Avevo eseguire l'applicazione del servizio prima di aggiungere i metodi viewXdoc e resti di stesse galleggiando da qualche parte all'interno di SharePoint. Dopo aver rimosso completamente tutte le istanze della vecchia Application Service, sono stato in grado di ri-run e farlo funzionare bene.