2012-03-26 35 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); 
       } 

如果你的插件是否正确注册,你将可以看到用户动作异常(创建,更新等)。你会从痕迹中知道服务是否成功调用。