Bug 44247 - Problem with using Dictionary<TKey,TValue>(KeyValuePair<TKey,TValue>) through WCF
Summary: Problem with using Dictionary<TKey,TValue>(KeyValuePair<TKey,TValue>) through...
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: WCF assemblies ()
Version: 4.4.2 (C7SR1)
Hardware: PC Linux
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
Depends on:
Reported: 2016-09-13 09:17 UTC by Alex
Modified: 2017-09-06 16:55 UTC (History)
1 user (show)

Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.

Please create a new report for Bug 44247 on GitHub or Developer Community if you have new information to add and do not yet see a matching new report.

If the latest results still closely match this report, you can use the original description:

  • Export the original title and description: GitHub Markdown or Developer Community HTML
  • Copy the title and description into the new report. Adjust them to be up-to-date if needed.
  • Add your new information.

In special cases on GitHub you might also want the comments: GitHub Markdown with public comments

Related Links:

Description Alex 2016-09-13 09:17:45 UTC
Description of Problem: 
If operation contract call Method with parametr KeyValuePair<TKey,TValue>:

bool TESTSTRINGTRASFER(KeyValuePair<int, int> test);

And then close the channel. We always get an exception in server 
ProtocolException (String.Format ("Duplex mode is expected to be 2"));

Steps to reproduce the problem:
1. Start wcf service:
var host = new ServiceHost(obj, url);
host.AddServiceEndpoint(typeof (T), new NetTcpBinding(SecurityMode.None), string.Empty);
host .Open();

2. On client create ChannelFactory<T>:
var factory = new ChannelFactory<T> (new NetTcpBinding (SecurityMode.None),new EndpointAddress (url));

3. Using the factory create channel:
var connection = factory.CreateChannel ();

4. Call Method TESTSTRINGTRASFER with some KeyValuePair<int, int>
Get an answer from server (simple return true in realization)

5. Close channel 

ICommunicationObject channel = (ICommunicationObject)connection;
if (channel.State != CommunicationState.Closed && channel.State != CommunicationState.Faulted) {						
try {
channel.Close ();
} catch (Exception ex) {															channel.Abort();}

On the client error does not occur

6. On server get an error from 	TcpBinaryFrameManager.ProcessPreambleRecipient 	
throw new ProtocolException (String.Format ("Duplex mode is expected to be {0:X}", mode));

Actual Results:

  A execution error caused by the "Duplex mode is expected to be 2";

Expected Results:

  Wcf channel should be closed after the closed by client.

How often does this happen? 


Additional Information: