我有一个插件,可以在创建新联系人时调用基于肥皂的Web服务。它是一个简单的肥皂网服务,在调用时显示欢迎消息
下面是app.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方面也不例外。 任何的想法??? 感谢
答案 0 :(得分:1)
首先,我想问你如何在服务器上显示内容?我没有看到任何使用插件的方法,但可能是我不对。在任何情况下,请显示您正在展示某些内容的部分代码 你说没有任何事情发生。首先,您应该检查插件是否已正确注册。据我所知,您应该检查是否添加了实体联系人和消息创建步骤。通常也会使用一些模板创建插件。在调用Web Service之前,代码中可能存在一些错误 还有一个我想强调的问题。您有一个配置文件,其中包含程序集的配置。我认为对于插件程序集最好不要在配置文件中存储任何配置,而是在代码中进行所有设置 几种不同的方法可以检查插件是否被触发。首先,您不仅可以部署dll,还可以部署pdb文件,并使用调试器附加到IIS进程。如果未安装Visual Studio,则可以使用Remote Debugger。如果由于某种原因不可能,你可以在代码的开头抛出PluginExecutionException,以确保真正调用插件。当您确定插件正常工作时,您可以开始使用Web Service进行测试。
答案 1 :(得分:0)
我假设您正在调用一些方法,在此行之后显示欢迎消息:
WelcomeClient client = new WelcomeClient(myBinding,endPointAddress);
我建议您使用跟踪服务来登录您的插件。将您的插件代码放在try catch中,并在跟踪后抛出InvalidPluginExecutionException。
您的代码可能在插件执行方法中看起来像这样:
试 {
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);
}
如果您的插件已正确注册,您将能够看到用户操作的异常(创建,更新等)。如果服务成功与否,您将从跟踪中了解到。