From 7ef1f2cd1b995a85acef649473d4a1f297b07f0a Mon Sep 17 00:00:00 2001 From: Abdelwahab Afifi Date: Fri, 1 Oct 2021 01:13:48 +0200 Subject: [PATCH 1/4] Fix XML Serializer Missing Parameter --- .../ServiceModel/Dispatcher/XmlSerializerOperationFormatter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.Private.ServiceModel/src/System/ServiceModel/Dispatcher/XmlSerializerOperationFormatter.cs b/src/System.Private.ServiceModel/src/System/ServiceModel/Dispatcher/XmlSerializerOperationFormatter.cs index 334921f2a25..165ada07cd2 100644 --- a/src/System.Private.ServiceModel/src/System/ServiceModel/Dispatcher/XmlSerializerOperationFormatter.cs +++ b/src/System.Private.ServiceModel/src/System/ServiceModel/Dispatcher/XmlSerializerOperationFormatter.cs @@ -387,7 +387,7 @@ private void SerializeBody(XmlDictionaryWriter writer, MessageVersion version, X } string encoding = _isEncoded ? GetEncoding(version.Envelope) : null; - serializer.Serialize(writer, bodyParameters, null); + serializer.Serialize(writer, bodyParameters, null, encoding); } From 0dca5a80b6d682b5c1a9c99b6964642575c3308a Mon Sep 17 00:00:00 2001 From: Abdelwahab Afifi Date: Tue, 9 Nov 2021 01:16:42 +0200 Subject: [PATCH 2/4] Add tests for XML Serializer - WSHttpBinding with Rpc/Encoded contracts --- .../tests/Common/Scenarios/Endpoints.cs | 15 +++ .../XmlSerializer/XmlSerializerFormatTest.cs | 99 +++++++++++++++---- 2 files changed, 97 insertions(+), 17 deletions(-) diff --git a/src/System.Private.ServiceModel/tests/Common/Scenarios/Endpoints.cs b/src/System.Private.ServiceModel/tests/Common/Scenarios/Endpoints.cs index 93c85713519..8dea90f48b4 100644 --- a/src/System.Private.ServiceModel/tests/Common/Scenarios/Endpoints.cs +++ b/src/System.Private.ServiceModel/tests/Common/Scenarios/Endpoints.cs @@ -169,6 +169,21 @@ public static string WSHttpBindingBaseAddress get { return GetEndpointAddress("WSHttp.svc/"); } } + public static string WSHttpRpcEncSingleNs_Address + { + get { return GetEndpointAddress("WSHttpRpcEncSingleNs.svc//Basic"); } + } + + public static string WSHttpRpcEncDualNs_Address + { + get { return GetEndpointAddress("WSHttpRpcEncDualNs.svc//Basic"); } + } + + public static string WSHttpRpcEncWithHeaders_Address + { + get { return GetEndpointAddress("WSHttpRpcEncWithHeaders.svc//Basic"); } + } + #region WebSocket Addresses public static string HttpBaseAddress_NetHttpWebSockets { diff --git a/src/System.Private.ServiceModel/tests/Scenarios/Contract/XmlSerializer/XmlSerializerFormatTest.cs b/src/System.Private.ServiceModel/tests/Scenarios/Contract/XmlSerializer/XmlSerializerFormatTest.cs index dc560fc45ef..b7119fdc611 100644 --- a/src/System.Private.ServiceModel/tests/Scenarios/Contract/XmlSerializer/XmlSerializerFormatTest.cs +++ b/src/System.Private.ServiceModel/tests/Scenarios/Contract/XmlSerializer/XmlSerializerFormatTest.cs @@ -127,14 +127,30 @@ public static void XmlSerializerFormatAttribute_SupportFaults() [OuterLoop] public static void XmlSerializerFormatEncodedAttributeTest() { - BasicHttpBinding binding = null; - EndpointAddress endpointAddress = null; + // *** SETUP *** \\ + BasicHttpBinding binding = new BasicHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncSingleNs_Address); + + XmlSerializerFormatEncodedAttributeHelper(binding, endpointAddress); + } + + [WcfFact] + [OuterLoop] + public static void XmlSerializerWSHttpFormatEncodedAttributeTest() + { + // *** SETUP *** \\ + WSHttpBinding binding = new WSHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.WSHttpRpcEncSingleNs_Address); + + XmlSerializerFormatEncodedAttributeHelper(binding, endpointAddress); + } + + private static void XmlSerializerFormatEncodedAttributeHelper(Binding binding, EndpointAddress endpointAddress) + { ChannelFactory factory1 = null; ICalculatorRpcEnc serviceProxy1 = null; // *** SETUP *** \\ - binding = new BasicHttpBinding(); - endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncSingleNs_Address); factory1 = new ChannelFactory(binding, endpointAddress); factory1.Endpoint.EndpointBehaviors.Add(new InspectorBehavior()); serviceProxy1 = factory1.CreateChannel(); @@ -159,14 +175,30 @@ public static void XmlSerializerFormatEncodedAttributeTest() [OuterLoop] public static void XmlSFAttributeRpcEncSingleNsTest() { - BasicHttpBinding binding = null; - EndpointAddress endpointAddress = null; + // *** SETUP *** \\ + BasicHttpBinding binding = new BasicHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncSingleNs_Address); + + XmlSFAttributeRpcEncSingleNsHelper(binding, endpointAddress); + } + + [WcfFact] + [OuterLoop] + public static void XmlSFAttributeWSHttpRpcEncSingleNsTest() + { + // *** SETUP *** \\ + WSHttpBinding binding = new WSHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.WSHttpRpcEncSingleNs_Address); + + XmlSFAttributeRpcEncSingleNsHelper(binding, endpointAddress); + } + + private static void XmlSFAttributeRpcEncSingleNsHelper(Binding binding, EndpointAddress endpointAddress) + { ChannelFactory factory1 = null; ICalculatorRpcEnc serviceProxy1 = null; // *** SETUP *** \\ - binding = new BasicHttpBinding(); - endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncSingleNs_Address); factory1 = new ChannelFactory(binding, endpointAddress); serviceProxy1 = factory1.CreateChannel(); @@ -303,21 +335,38 @@ public static void XmlSFAttributeDocLitSingleNsTest() [OuterLoop] public static void XmlSFAttributeRpcEncDualNsTest() { - BasicHttpBinding binding = null; - EndpointAddress endpointAddress = null; + // *** SETUP *** \\ + BasicHttpBinding binding = new BasicHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncDualNs_Address); + + XmlSFAttributeRpcEncDualNsHelper(binding, endpointAddress); + } + + [WcfFact] + [OuterLoop] + public static void XmlSFAttributeWSHttpRpcEncDualNsTest() + { + // *** SETUP *** \\ + WSHttpBinding binding = new WSHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.WSHttpRpcEncDualNs_Address); + + XmlSFAttributeRpcEncDualNsHelper(binding, endpointAddress); + } + + + private static void XmlSFAttributeRpcEncDualNsHelper(Binding binding, EndpointAddress endpointAddress) + { ChannelFactory factory1 = null; ChannelFactory factory2 = null; ICalculatorRpcEnc serviceProxy1 = null; IHelloWorldRpcEnc serviceProxy2 = null; // *** SETUP *** \\ - binding = new BasicHttpBinding(); - endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncDualNs_Address); factory1 = new ChannelFactory(binding, endpointAddress); serviceProxy1 = factory1.CreateChannel(); factory2 = new ChannelFactory(binding, endpointAddress); serviceProxy2 = factory2.CreateChannel(); - + // *** EXECUTE Variation *** \\ try { @@ -474,8 +523,26 @@ public static void XmlSFAttributeDocLitDualNsTest() [OuterLoop] public static void XmlSFAttributeRpcEncMessageHeaderTest() { - BasicHttpBinding binding = null; - EndpointAddress endpointAddress = null; + // *** SETUP *** \\ + BasicHttpBinding binding = new BasicHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncWithHeaders_Address); + + XmlSFAttributeRpcEncMessageHeaderHelper(binding, endpointAddress); + } + + [WcfFact] + [OuterLoop] + public static void XmlSFAttributeWSHttpRpcEncMessageHeaderTest() + { + // *** SETUP *** \\ + WSHttpBinding binding = new WSHttpBinding(); + EndpointAddress endpointAddress = new EndpointAddress(Endpoints.WSHttpRpcEncWithHeaders_Address); + + XmlSFAttributeRpcEncMessageHeaderHelper(binding, endpointAddress); + } + + private static void XmlSFAttributeRpcEncMessageHeaderHelper(Binding binding, EndpointAddress endpointAddress) + { ChannelFactory factory1 = null; IEchoRpcEncWithHeadersService serviceProxy1 = null; string echoText = "Hello"; @@ -483,8 +550,6 @@ public static void XmlSFAttributeRpcEncMessageHeaderTest() string expectedHeaderText = headerText + headerText; // *** SETUP *** \\ - binding = new BasicHttpBinding(); - endpointAddress = new EndpointAddress(Endpoints.BasicHttpRpcEncWithHeaders_Address); factory1 = new ChannelFactory(binding, endpointAddress); serviceProxy1 = factory1.CreateChannel(); From 28b7c990f3fa4e1f63f1fea364855e603a2c9f2f Mon Sep 17 00:00:00 2001 From: Abdelwahab Afifi Date: Wed, 26 Jan 2022 13:48:30 +0200 Subject: [PATCH 3/4] Add docker file for wcf service --- docker/Dockerfile | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 docker/Dockerfile diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000000..8915df86573 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,10 @@ +FROM mcr.microsoft.com/dotnet/framework/wcf +COPY . /wcf + +RUN dir +WORKDIR /wcf +RUN dir + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"] +ENTRYPOINT ["powershell"] +CMD src\System.Private.ServiceModel\tools\scripts\SetupWcfIISHostedService.cmd 38 /p:"c:\wcf"; powershell From b2113f1759339b38d9a528ee64e6290a7e5c8d36 Mon Sep 17 00:00:00 2001 From: Abdelwahab Afifi Date: Wed, 7 Dec 2022 04:06:05 +0200 Subject: [PATCH 4/4] remove docker file --- docker/Dockerfile | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 docker/Dockerfile diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 8915df86573..00000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,10 +0,0 @@ -FROM mcr.microsoft.com/dotnet/framework/wcf -COPY . /wcf - -RUN dir -WORKDIR /wcf -RUN dir - -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"] -ENTRYPOINT ["powershell"] -CMD src\System.Private.ServiceModel\tools\scripts\SetupWcfIISHostedService.cmd 38 /p:"c:\wcf"; powershell