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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top