Frage

Dies ist mein erster Versuch, eine Servicemapplikation zu erhalten, und ich bin sehr neu mit der Idee. Ich habe den hier gefundenen Wingtipcalc -Beispielcode verwendet http://msdn.microsoft.com/en-us/library/gg543112.aspx Ich hatte kein Problem damit, dass die Taschenrechnerfunktionen funktionieren, aber dann versuchte ich zu ändern, damit er einen Filepath empfangen würde, dann eher zwei INTs und die Ausgabe des Inhalts dieser Datei in einer Zeichenfolge im Gegensatz zur Summe oder Subtraktion der beiden INTs (die Datei ist ein XML -Dokument). Ich fügte die notwendigen Methoden hinzu, die im Grunde genommen modifizierte Versionen der Add- und Subtrahieren von Methoden waren, und es schien gut zu laufen, bis es den ExecuteonChannel -Delegierten erhielt. Ich habe diesen Fehler erhalten:

Die Nachricht mit Aktion 'http://tempuri.org/iwingtipcalconcract/viewxdoc' kann aufgrund einer Vertragsfilter -Nichtübereinstimmung am EndpointDispatcher nicht am Empfänger verarbeitet werden. Dies kann entweder auf eine Vertragsfehlanpassung (nicht übereinstimmende Aktionen zwischen Absender und Empfänger) oder an einem Bindungs-/Sicherheitsmismatronen zwischen dem Absender und dem Empfänger liegen. Überprüfen Sie, ob Absender und Empfänger denselben Vertrag und die gleiche Bindung haben (einschließlich Sicherheitsanforderungen, z. B. Meldung, Transport, keine).

Hier ist die Methode, die es geworfen hat:

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();
        }
    }

Speziell diese Zeile:

codeBlock((IWingtipCalcContract)channel);

Ich wünschte, ich könnte mehr Informationen liefern, aber wie ich schon sagte, ich bin sehr neu dabei. Jede Hilfe wäre geschätzt. Vielen Dank!

War es hilfreich?

Lösung

Ich deaktivierte die Funktion, zog die Lösung zurück und entfernte dann meinen Computer neu und es funktionierte gut.

Ich glaube, was passiert ist, war der alte Servicevertrag war immer noch im GAC. Ich hatte die Serviceanwendung ausgeführt, bevor ich die ViewXDOC -Methoden hinzufügte, und sie schwebten irgendwo in SharePoint herum. Nachdem ich alle Fälle der alten Serviceanwendung vollständig entfernt hatte, konnte ich es neu ausführen und es gut funktionieren lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top