【发布时间】:2016-01-14 06:53:55
【问题描述】:
我尝试为我的测试自动化实施 WCF 双工服务。服务器调用正常,但没有回调客户端方法。我已经浏览过其他博客和 stacoverflow。将 Isoneway 属性设置为 true,将并发模式设置为可重入,并将同步上下文设置为 false。以前它工作正常。我不知道是什么导致了这个问题。 在这个服务契约中,增加了回调
[ServiceContract(CallbackContract=typeof(ICollaborationServiceCallBack),SessionMode=SessionMode.Required)]
public interface ICollaborationInfrastructureService
{
在测试中,初始化代理
[TestFixture]
[CallbackBehavior(UseSynchronizationContext = false, ConcurrencyMode = ConcurrencyMode.Reentrant,IncludeExceptionDetailInFaults=true)]
public class SAF_TestCollaboration : TestFixtureBase, ICollaborationInfrastructureServiceCallback
{
private SfdTestSteps steps = null;
private CollaborationInfrastructureServiceClient client = null;
private SfdTask task = null;
protected override void TestFixtureSetupBegin()
{
base.TestFixtureSetupBegin();
steps = new SfdTestSteps();
task = new SfdTask();
PrepareEnvironment();
client = new CollaborationInfrastructureServiceClient(new InstanceContext(this));
}
public void Login(string username,string password)
{
TestMonitor.Do("xyz","xyz", "xyz",
() =>
{
xyzzzzz.....
OperationContext.Current.GetCallbackChannel<ICollaborationServiceCallBack>().DoLoginIn("xyz", "xyz");
});
}
方法在测试端实现...
public void DoLoginIn(string username, string password)
{
steps.Login.UserName = username;
steps.Login.Password = password;
steps.Login.DoLogin();
}
【问题讨论】:
-
信息不足。向我们展示您尝试回调客户端的代码。
-
不,把这个放在问题中,而不是评论
-
我更新了问题,请看一下...
-
TestMonitor.Do是否在不同的线程上运行委托? -
是的,行动委托
标签: wcf