2014-04-02 13 views
7

Câu hỏi khá cơ bản, nhưng tôi dường như không thể tìm thấy câu trả lời ở bất cứ đâu.Tạo một từ điển mới trong một phong bì SOAP

Làm cách nào để bạn chỉ định một phiên bản mới của Dictionary<string, string> trong SOAP? Về cơ bản tôi có phong bì này (ommitted phong bì thẻ cấp cao nhất để có thể đọc):

<soapenv:Body> 
    <tem:LogInWithCredentials>  
     <tem:Request>    
     <ttf1:Password>password</ttf1:Password>   
     <ttf1:UserName>username</ttf1:UserName> 
     <ttf1:RequestInfo></ttf1:RequestInfo> 
     </tem:Request>  
    </tem:LogInWithCredentials> 
</soapenv:Body> 

RequestInfo là tài sản trong câu hỏi, nhưng nó luôn luôn null. Tôi giả định rằng sự hiện diện của tài sản trong phong bì sẽ được deserialized vào một trống Dictionary<string, string>, tuy nhiên đây không phải là trường hợp.

+0

Theo truyền thống, từ điển không thể tuần tự hóa được trong .NET. Điều đó nói rằng, DataContractSerializer có thể xử lý điều này mà không có một vấn đề. Tôi nghi ngờ vấn đề của bạn không phải là serializer. –

+0

Lý do của bạn cho suy nghĩ đó sẽ được deserialized như là một từ điển? Nó được định nghĩa như thế nào trong lược đồ? Và, bạn đã thử sử dụng Tham chiếu dịch vụ chưa? Trong trường hợp đó, loại thuộc tính được tạo ra là gì? –

Trả lời

1

Như @flem nói, DataContractSerializer có thể cung cấp các manh mối cần thiết để trả lời câu hỏi này. Nối tiếp một từ điển trống cho XML sau đây. Hãy thử điều đó trong phần tử RequestInfo của bạn và xem nó có hoạt động hay không (tôi chưa thử nghiệm nó).

<ArrayOfKeyValueOfstringstring 
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /> 
+0

Liệu người chăm sóc downvoter có nhận xét không? Nếu nó không hoạt động thì tôi sẽ cập nhật câu trả lời cho phù hợp. –

Các vấn đề liên quan