Advertisement

12.17.2007 at 01:50PM PST, ID: 23029235
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

WCF Deserialization Problem

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:

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;
        }
Start your free trial to view this solution
Question Stats
Zone: Programming
Question Asked By: Phreak3eb
Solution Provided By: surajguptha
Participating Experts: 2
Solution Grade: A
Views: 131
Translate:
Loading Advertisement...
12.17.2007 at 01:56PM PST, ID: 20488278

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.17.2007 at 01:58PM PST, ID: 20488291

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.17.2007 at 03:00PM PST, ID: 20488714

Rank: Wizard

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.18.2007 at 04:57AM PST, ID: 20491572

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.18.2007 at 05:38AM PST, ID: 20491901

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.18.2007 at 05:57AM PST, ID: 20492023

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.18.2007 at 06:00AM PST, ID: 20492042

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.18.2007 at 06:05AM PST, ID: 20492093

Rank: Wizard

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.18.2007 at 11:05AM PST, ID: 20494453

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
20080236-EE-VQP-29 / EE_QW_2_20070628