2012-03-26 64 views
1

我有上建立一個新的contact.Its,顯示調用時一個值得歡迎的消息,一個簡單的SOAP Web服務調用基於SOAP的Web服務的一個插件調用微軟CRM插件SOAP Web服務

下面是應用.config包含所有配置要求。

<?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> 

以下是C#插件代碼

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

當我創建CRM聯繫人說,沒有東西顯示我的服務器上。 CRM方面也不例外。 任何想法??? 謝謝

回答

1

起初我想問你,你將如何顯示在你的服務器上的東西?我沒有看到用插件做這件事的任何方式,但可能是我不對。無論如何,請在部分代碼中展示您展示的內容。
你是在說什麼都沒有發生。首先你應該檢查插件是否正確註冊。據我瞭解,你應該檢查是否增加了實體聯繫人和消息創建步驟。通常也使用一些模板創建插件。在調用Web服務之前,代碼中可能會出現一些錯誤。
另一個問題,我想強調。你有一個配置文件和你的程序集的配置。我認爲插件程序集最好不要將任何配置存儲在配置文件中,而是在代碼中進行所有設置。
有幾種不同的方法來檢查插件是否被解僱。起初,您不僅可以部署dll,還可以部署pdb文件,並使用調試器附加到IIS進程。如果沒有安裝Visual Studio,則可以使用遠程調試器。如果由於某種原因而無法實現,則可以在代碼的開始處插入PluginExecutionException,以確保真正調用了插件。當你確定插件正常工作時,你可以開始測試Web服務。

0

我假設你正在調用一些方法,它顯示了此行之後的歡迎信息:

WelcomeClient client = new WelcomeClient(myBinding,endPointAddress); 

我建議你應該使用跟蹤服務,爲您的插件登錄。在插入代碼中放入try catch,並在跟蹤之後拋出InvalidPluginExecutionException。

您的代碼可能看起來像這樣的插件Execute方法:

嘗試 {

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

如果你的插件是否正確註冊,你將可以看到用戶動作異常(創建,更新等)。你會從痕跡中知道服務是否成功調用。