Bekannte Probleme bei den BAM WCF- und WF-Interceptors
Dieser Abschnitt enthält Informationen zu bekannten Problemen, die bei Verwendung des BAM-Interceptors für Windows Workflow Foundation oder Windows Communication Foundation auftreten können.
Abfangen einer dynamisch generierten WCF-Assembly, die in IIS gehostet wird
Wenn Sie IIS zum Hosten einer eingebetteten WCF-Anwendung (Windows Communication Foundation) verwenden (z. B. eine Dienstdatei zur Angabe der Assemblyquelle), wird die WCF-Assembly dynamisch generiert. Anschließend wird ihr ein beliebiger Dateiname zugewiesen, und sie wird im temporären Ordner asp.net gespeichert. Da die Interceptorkonfigurationsdatei Manifestinformationen erfordert und da Platzhalterzeichen oder andere dynamische Methoden zur Angabe des Manifests bei Interceptorkonfigurationsdateien nicht verfügbar sind, müssen Sie den Dienst erneut kompilieren und anschließend die Interceptorkonfigurationsdatei erstellen, oder Sie müssen die Interceptorkonfigurationsdatei erneut bereitstellen, nachdem Sie alle ASP.NET-Webseiten mit eingebettetem WCF-Code bereitgestellt haben.
Verwendung des BAM-Interceptors für Windows Workflow Foundation (WF) wird in Office und SharePoint Server nicht unterstützt
Beim Initialisieren des WF-Laufzeitmoduls lesen sowohl Office als auch Windows SharePoint Server nicht aus der Konfigurationsdatei der Anwendung. Infolgedessen wird der BAM-Interceptor für WF für eine Anwendung möglicherweise konfiguriert, doch nicht in die Workflowlaufzeit geladen, wenn er in diesen Umgebungen gehostet wird.
Clientdienstsperren beim Initiieren einer verteilten Transaktion
Wenn der Dienstvorgang an der vom Client initiierten Transaktion nicht teilnimmt und der Client den Dienst aus dem Kontext eines Transaktionsbereichs aufruft, könnte dies zu einem Deadlock führen – insbesondere dann, wenn Daten aus dem Client vor der Sendeanforderung und aus dem Dienst von der Empfangsanforderung für dieselbe Aktivität erfasst werden.
Zur Vermeidung dieser Situation sollten Sie angeben, dass der Client an der Transaktion nicht teilnimmt, indem Sie in der Datei app.config des Clients im Clientattribut ConnectionString
für die BAM-Verhaltenserweiterung den Wert Enlist=false deklarieren, wie nachstehend gezeigt wird.
<behavior name="bamClientBehavior">
<bamClientBehaviorExtension ConnectionString="Integrated Security=SSPI;Initial Catalog=BAMPrimaryImport;Data Source=.; Enlist=false" PollingIntervalSec="1500" />
</behavior>
Öffnen des WCF-Kanals vor dem Senden einer Nachricht, wenn BAM-Interceptors verwendet werden
Wenn der BAM-Interceptor für WCF mit BasicHttp-Bindung aktiviert ist, sollte der Proxy proxy.Open() aufrufen, um den Kanal explizit zu öffnen. Wenn der Kanal nicht explizit geöffnet wird, kann die BAM-Abfangfunktion mit einer Ausnahme fehlschlagen.