TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
B B
NA
100
1.8k
Service method not calling second time
Jan 7 2017 5:01 AM
I have two Interface one of which is a callback interface and one implementaion class as following.
[ServiceContract(CallbackContract = typeof(IMonitorCallback))]
interface IMonitor
{
[OperationContract(IsOneWay = true)]
Task AddMonitor(Monitor mo);
[OperationContract(IsOneWay = true)]
Task RemoveMonitor(Monitor mo);
}
interface IMonitorCallback
{
[OperationContract]
void OnAdded(Monitor data);
[OperationContract]
void OnRemoved(Monitor data);
}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.Single)]
public class Monitor : IMonitor
{
public Task AddMonitor(Monitor mo)
{}
public Task RemoveMonitor(Monitor mo)
{}
}
Now i want to call this method from unit test one after the another (in a single test method). I am able to call the AddMonitor but when i call the Remove method its not hitting the service method. Code is given below.
[TestClass]
public class Test
{
private Monitor monitor = null;
private IMonitor proxy = null;
private DuplexChannelFactory<IMonitor> channelFactory;
private ManualResetEvent mutex = new ManualResetEvent(false);
// This class for callback implementation
private MonitorCallback monitorCallback = null;
public void TestInitialize()
{
this.monitor = new Monitor();
// Hosting is done here
this.monitor.Initialize();
this.monitorCallback = new MonitorCallback();
this.monitorCallback.OnDataValueChanged += () =>
{
if (null != this.valueChangedMutex)
{
this.valueChangedMutex.Set();
}
};
this.channelFactory = new DuplexChannelFactory<IMonitor>(this.monitorCallback,
new NetTcpBinding(),
this.clientAddress);
try
{
this.proxy = this.channelFactory.CreateChannel();
}
catch
{
if (null != proxy)
{
((ICommunicationObject)proxy).Abort();
this.proxy = null;
}
throw;
}
}
[TestMethod]
[TestCategory("StatusMonitor")]
public async Task TestRemoveMonitor()
{
this.mutex.Reset();
await this.proxy.AddMonitor(mo);
this.mutex.WaitOne(30000);
this.mutex.Reset();
await this.proxy.RemoveMonitor(mo);
this.mutex.WaitOne(10000);
}
}
Can someone provide me a solution for this.
Reply
Answers (
3
)
Want to run the multiple wcf service on the same machine
what is alternative of Wcf OperationContext.Current.Items