2012-03-26 3 views
1

ich ein Plugin, das eine Seife basierend auf Schaffung eines neuen contact.Its Webservice ruft eine einfache Seife Web-Service, der eine Begrüßungsnachricht angezeigt wird, wenn genannteine Seife Web-Service von Microsoft CRM-Plugin aufrufen

Below App .config, die alle Konfigurationsanforderungen enthält.

<?xml version="1.0"?> 
     <configuration> 
      <system.serviceModel> 
       <bindings> 
        <basicHttpBinding> 
         <binding name="WelcomeBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> 
         <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> 
         <security mode="None"> 
          <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
          <message clientCredentialType="UserName" algorithmSuite="Default"/> 
         </security> 
        </binding> 
       </basicHttpBinding> 
      </bindings> 
      <client> 
       <endpoint address="http://revesinc.com/WelcomeSeamService/Welcome" binding="basicHttpBinding" bindingConfiguration="WelcomeBinding" contract="ServiceReference1.Welcome" name="WelcomePort"/> 
      </client> 
     </system.serviceModel> 
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> 

und unter C# Plugin-Code

BasicHttpBinding myBinding = new BasicHttpBinding();  
myBinding.Name = "WelcomeBinding"; 
myBinding.Security.Mode = BasicHttpSecurityMode.None; 
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;      
myBinding.Security.Message.ClientCredentialType =     BasicHttpMessageCredentialType.UserName; 
        EndpointAddress endPointAddress = new EndpointAddress("http://revesinc.com/WelcomeSeamService/Welcome"); 
WelcomeClient client = new WelcomeClient(myBinding,endPointAddress); 

, wenn ich einen Kontakt im CRM erstellen, wird auf meinem Server nichts angezeigt wird. Es gibt auch keine Ausnahme auf CRM-Seite. Irgendeine Idee ??? danke

Antwort

1

Zuerst möchte ich dich fragen, wie willst du etwas auf deinem Server anzeigen? Ich sehe keine Möglichkeit, dies mit dem Plugin zu tun, aber vielleicht bin ich nicht richtig. In jedem Fall, bitte, zeigen Sie einen Teil des Codes, wo Sie etwas anzeigen.
Sie sagen, dass nichts passiert. Zuerst sollten Sie überprüfen, ob das Plugin richtig registriert ist. Wie ich verstanden habe, sollten Sie überprüfen, ob ein Schritt mit Entity Contact und Message Create hinzugefügt wurde. Auch Plugins werden normalerweise mit einigen Vorlagen erstellt. Möglicherweise ist ein Fehler in dem Teil Ihres Codes, bevor Sie Web Service aufrufen.
Und ein anderes Thema möchte ich hervorheben. Sie haben eine Konfigurationsdatei mit den Konfigurationen Ihrer Baugruppe. Ich denke, dass es für Plug-In-Assemblies besser ist, keine Konfigurationen in Konfigurationsdateien zu speichern, sondern alle Einstellungen im Code vorzunehmen.
Es gibt einige verschiedene Möglichkeiten zu überprüfen, dass das Plugin ausgelöst wurde. Zunächst können Sie nicht nur dll, sondern auch pdb-Dateien bereitstellen und mit dem Debugger an den IIS-Prozess anhängen. Wenn kein Visual Studio installiert ist, können Sie den Remote-Debugger verwenden. Wenn dies aus irgendeinem Grund nicht möglich ist, können Sie PluginExecutionException am Anfang Ihres Codes auslösen, um sicherzustellen, dass das Plug-In wirklich aufgerufen wird. Und wenn Sie sicher sein werden, dass das Plug-in funktioniert, können Sie den Test mit dem Web-Service starten.

0

Ich gehe davon aus, dass Sie eine Methode aufrufen, die die Begrüßungsnachricht nach dieser Zeile zeigt:

WelcomeClient client = new WelcomeClient(myBinding,endPointAddress); 

Ich würde vorschlagen, dass Sie den Suchdienst für die Anmeldung in Ihrem Plugin verwenden sollten. Setzen Sie Ihren Plugin-Code in try catch und werfen Sie InvalidPluginExecutionException nach der Ablaufverfolgung aus.

Ihr Code kann Methode so etwas wie dies in der Plug aussehen Execute:

versuchen {

    ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); 

        BasicHttpBinding myBinding = new BasicHttpBinding(); 
        myBinding.Name = "WelcomeBinding"; 
        myBinding.Security.Mode = BasicHttpSecurityMode.None; 
        myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; 
        myBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; 
        EndpointAddress endPointAddress = new EndpointAddress("http://revesinc.com/WelcomeSeamService/Welcome"); 
        WelcomeClient client = new WelcomeClient(myBinding, endPointAddress); 
        client.ShowWelcomeMessage(); // Assuming this is your service method 
        tracingService.Trace("All went well. service called."); 
        throw new InvalidPluginExecutionException("All went well. Exception just to show the traces on the form"); 

       } 
       catch (Exception ex) 
       { 
        tracingService.Trace("Error calling welcome service " + ex.Message); 
        throw new InvalidPluginExecutionException(ex.Message); 
       } 

Wenn Ihr Plugin richtig registriert ist, können Sie die Ausnahme auf die Benutzeraktion sehen (Erstellen, Aktualisieren usw.). Sie wissen von Spuren, ob der Dienst erfolgreich aufgerufen wurde oder nicht.