Laden von BAM-Interceptors mithilfe der BAM-API
Dieses Thema enthält Informationen zum Laden der WF- und WCF-Interceptors aus dem Code anstatt aus einer Konfigurationsdatei.
Laden des WF-Interceptors aus Code
Damit das WF-Interceptorlaufzeitmodul aus Ihrem Code geladen werden kann, müssen Sie eine neue Instanz von WorkflowRuntime erstellen und dann die Methode AddService mit einer neuen Instanz von BamTrackingService aufrufen. Dieser Vorgang wird unten gezeigt.
string connectionString = "Integrated Security=SSPI;Data Source=.;Initial Catalog=BAMPrimaryImport";
int PollingIntervalSec = 300;
WorkflowRuntime workflowRuntime = new WorkflowRuntime();
workflowRuntime.AddService(new BamTrackingService(connectionString, interceptorConfigurationPollingInterval));
Laden des WCF-Interceptors aus Code
Damit der WCF-Interceptor geladen werden kann, müssen Sie eine abgeleitete Klasse erstellen, die den Dienst öffnet und auf die Ihre Implementierung zugreifen kann. Dieser Vorgang wird unten gezeigt.
// Your project must have a reference to Microsoft.BizTalk.BAM.Interceptors.dll.
// Create a derived class accessible to the implementation that opens the service.
internal class MyBamBehaviorExtension : BamBehaviorExtension
{
internal MyBamBehaviorExtension(string connectionString, int pollingInterval)
: base()
{
this.ConnectionString = connectionString;
this.PollingIntervalSec = pollingInterval.ToString();
}
internal IEndpointBehavior Create()
{
return (IEndpointBehavior) this.CreateBehavior();
}
}
// Add the endpoint behavior just before the service is opened.
// In this example the connection string and polling intervals are being read from appSettings in App.config.
MyBamBehaviorExtension bamBehaviorExtension = new MyBamBehaviorExtension(ConfigurationManager.AppSettings["ConnectionString"], int.Parse(ConfigurationManager.AppSettings["PollingIntervalSec"]));
IEndpointBehavior bamBehavior = bamBehaviorExtension.Create();
foreach (System.ServiceModel.Description.ServiceEndpoint endpoint in myServiceHost.Description.Endpoints)
{
if (endpoint.Behaviors.Find<MyBamBehaviorExtension>() == null)
endpoint.Behaviors.Add(bamBehavior);
}