2017-03-23 1 views
1

複雑なデータ型をPerlから.NET WCFに送信しようとしています。 シンプルタイプは正常に動作します。WCF Webサービスがkomplexを埋めていないタイプのSOAPを送信します。

WCFインタフェース:データ型

[DataContract (Name="ServerInfoCollection")] 
public class ServerInfoCollection 
{ 

    [DataMember] 
    public string OperatingSystem { get; set; } 
    [DataMember] 
    public string OS_Version { get; set; } 
    [DataMember] 
    public string OS_Architecture { get; set; } 
    [DataMember] 
    public string OS_ServicePack { get; set; } 

    private long pysicalMem = 0; 
    [DataMember] 
    public long PysicalMemory 
    { 
     get { return pysicalMem; } 
     set { pysicalMem = value; } 
    } 
    [DataMember] 
    public List<FileSystem> Filesystems { get; set; } 
    [DataMember] 
    public string Manufacturer { get; set; } 
    [DataMember] 
    public List<Interface> Interfaces { get; set; } 
    [DataMember] 
    public string Model { get; set; } 
    public ServerInfoCollection() 
    { 
     Filesystems = new List<FileSystem>(); 
     Interfaces = new List<Interface>(); 
    } 
    [DataMember] 
    public string Hostname { get; set; } 
    [DataMember] 
    public string Alias { get; set; } 
    [DataMember] 
    public string WindowsDomain { get; set; } 
    [DataMember] 
    public string WindowsDomainRole { get; set; } 
    [DataMember] 
    public DateTime InstallDate { get; set; } 
    [DataMember] 
    public int LogicalProcessors { get; set; } 
    [DataMember] 
    public int PhysicalProcessors { get; set; } 
    [DataMember] 
    public IPAddress MonitoringIP { get; set; } 
} 

ソープEnvenloveについては

[ServiceContract] 

public interface IWebservice 
{ 
    [WebInvoke(RequestFormat = WebMessageFormat.Xml, 
     ResponseFormat = WebMessageFormat.Xml, 
     BodyStyle = WebMessageBodyStyle.Wrapped)] 
    [OperationContract] 
    void PutColledtedData(ServerInfoCollection Serverdata); 
} 

クラスがサーバーに送信

<?xml version="1.0" encoding="UTF-8"?> 
<soap:Envelope 
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<soap:Body> 
<PutColledtedData xmlns="http://tempuri.org/"> 
    <Serverdata> 
    <OperatingSystem /> 

    <OS_Version>13.1 (Bottle)</OS_Version> 

    <OS_Architecture>x86_64</OS_Architecture> 

    <OS_ServicePack>13.1</OS_ServicePack> 

    <PysicalMemory>6272438272</PysicalMemory> 

    <Manufacturer>VMWare</Manufacturer> 

    <Model /> 

    <Hostname>myServerName</Hostname> 

    <Alias>myServerName</Alias> 

    <WindowsDomain /> 

    <WindowsDomainRole /> 

    <InstallDate>Thu Nov 27 12:21:33 2014</InstallDate> 

    <LogicalProcessors>4</LogicalProcessors> 

    <PhysicalProcessors>4</PhysicalProcessors> 
    </Serverdata> 
</PutColledtedData> 
</soap:Body> 
</soap:Envelope> 

のPerlコード:

​​

Webservice ServerInfoCollectionのObekctが取得されますが、すべてのPropertiesがnullです。

私の勘違いはどこですか?

EDIT: 追加のPerlコード、 追加Webinvokeが

+0

あなたの質問を編集し、あなたのPerlコードを入れてください。あなたが何をしているのかわからないと、何がうまくいかないのかどうかはわかりません。 – simbabque

答えて

0

あなたのPerlコードserverinfos値が空であるServiceInterfaceします。満たされている場合、サーバーの回答はOKです。

+0

不幸なことに、(Saop Envelopeに表示されるように、Object Serverdataのデータがいっぱいです。一部の文字列は空ですが、これは通常の動作です。 – user2310654

関連する問題