Advertisement

12.17.2007 at 01:50PM PST, ID: 23029235
[x]
Attachment Details

WCF Deserialization Problem

Asked by Phreak3eb in .NET Framework 3.x versions, C# Programming Language, Microsoft Visual C#.Net

Tags: wcf, error, http

I'm trying to setup a WCF service to work with remote machines.  I have the service contracts and data contracts created and also a test service host application.  I'm able to go to http://localhost:9998/EasyWMI/BIOS through a web browser.  I've run svcutil against it and generated the client config and .cs files.  However, when I try to run the method SelectAll, as defined in the Service Contract, I get the error:
"An error occurred while receiving the HTTP response to http://localhost:9998/EasyWMI/BIOS. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details."

From what I've found on the web, I need to use the KnownTypeAttribute attribute on my data contract.  Here is my code:

Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
SERVICE CONTRACT:
using System;
using System.ServiceModel;
using System.Collections.Generic;
namespace EasyWMI.Interfaces
{
    [ServiceContract(Namespace = "http://EasyWMI.Interfaces/2007/12")]
    public interface IController
    {
        [OperationContract]
        System.Collections.ArrayList SelectAll();
    }
}
 
DATA CONTRACT:
using System.Runtime.Serialization;
using System.ServiceModel;
using System;
namespace EasyWMI.Models.root.CIMV2
{
    
    
    [DataContract()]
    [KnownType(typeof(object[]))]
    [KnownType(typeof(ushort[]))]
    [KnownType(typeof(string[]))]
    public class Win32_BIOS
    {
        
        private ushort [] m_BiosCharacteristics;        
        private string [] m_BIOSVersion;        
        private string m_BuildNumber;    
        
        [DataMember()]
        public ushort [] BiosCharacteristics
        {
            get
            {
                return this.m_BiosCharacteristics;
            }
            set
            {
                this.m_BiosCharacteristics = value;
            }
        }
        
        [DataMember()]
        public string [] BIOSVersion
        {
            get
            {
                return this.m_BIOSVersion;
            }
            set
            {
                this.m_BIOSVersion = value;
            }
        }
        
        [DataMember()]
        public string BuildNumber
        {
            get
            {
                return this.m_BuildNumber;
            }
            set
            {
                this.m_BuildNumber = value;
            }
        }
    }
}
 
Here is the method that it fails on when it try's to return the collection (this method belongs to the class that inherits the service contract for IController):
 
public System.Collections.ArrayList SelectAll()
        {
            ManagementObjectCollection oReturnCollection = null;
            System.Collections.ArrayList List = new System.Collections.ArrayList();
            try
            {
                oReturnCollection = GetObjectCollection("Win32_BIOS");
            }
            catch (System.Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
            int x = 0;
            ManagementObjectCollection.ManagementObjectEnumerator CollectionEnumerator = oReturnCollection.GetEnumerator();
            int i = 0;
            for (i = 0; (i < oReturnCollection.Count); i = (i + 1))
            {
                Win32_BIOS WMIObject = new Win32_BIOS();
                CollectionEnumerator.MoveNext();
                ManagementObject newWMIObject = (ManagementObject)CollectionEnumerator.Current;
                PropertyDataCollection t = newWMIObject.Properties;
                if (t != null)
                {
                    PropertyDataCollection.PropertyDataEnumerator PropertyCollectionEnumerator = t.GetEnumerator();
                    for (x = 0; (x < t.Count); x = (x + 1))
                    {
                        PropertyInfo p = null;
                        PropertyData pi = null;
                        try
                        {
                            PropertyCollectionEnumerator.MoveNext();
                            pi = (PropertyData)PropertyCollectionEnumerator.Current;
                            p = typeof(Win32_BIOS).GetProperty(pi.Name);
                        }
                        catch (System.Exception ex)
                        {
                            Debug.WriteLine(ex.Message);
                        }
                        try
                        {
                            if (p != null && pi.Value != null)
                            {
                                p.SetValue(WMIObject, pi.Value, null);
                                PropertyInfo ppath = typeof(Win32_BIOS).GetProperty("MyPath");
                                ppath.SetValue(WMIObject, newWMIObject.Path.ToString(), null);
                            }
                        }
                        catch (System.Exception ex)
                        {
                            Debug.WriteLine(ex.Message);
                        }
                    }
                }
                List.Add(WMIObject);
            }
            return List;
        }
[+][-]12.17.2007 at 01:56PM PST, ID: 20488278

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12.17.2007 at 01:58PM PST, ID: 20488291

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12.17.2007 at 03:00PM PST, ID: 20488714

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12.18.2007 at 04:57AM PST, ID: 20491572

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12.18.2007 at 05:38AM PST, ID: 20491901

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
[+][-]12.18.2007 at 05:57AM PST, ID: 20492023

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12.18.2007 at 06:00AM PST, ID: 20492042

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]12.18.2007 at 06:05AM PST, ID: 20492093

View this solution now by starting your 7-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zones: .NET Framework 3.x versions, C# Programming Language, Microsoft Visual C#.Net
Tags: wcf, error, http
Sign Up Now!
Solution Provided By: surajguptha
Participating Experts: 2
Solution Grade: A
 
 
[+][-]12.18.2007 at 11:05AM PST, ID: 20494453

Often, when Experts are collaborating with members who have asked questions, they will request additional information about the problem. Askers respond with an author comment like this one.

Start your 7-day free trial to view this Author Comment or ask the Experts your question.

 
 
Loading Advertisement...
20080716-EE-VQP-32 / EE_QW_2_20070628