2010-02-17 22 views
11

Tôi cần sử dụng Java Webservice có các thành phần kiểu Ngày và Giờ.Sử dụng Java Webservice với các yếu tố Ngày và Giờ trong WCF

Ví dụ từ wsdl:

... 
<xsd:element name="fromTime" nillable="true" type="xsd:time" /> 
<xsd:element name="dateOfInspection" type="xsd:date" /> 
... 

Khi tiêu thụ các Webservice qua Thêm dịch vụ tham khảo Visual Studio 2008 tạo ra đoạn mã sau:

[System.Xml.Serialization.SoapElementAttribute(DataType="time", IsNullable=true)] 
public System.Nullable<System.DateTime> fromTime { ... } 

[System.Xml.Serialization.SoapElementAttribute(DataType="date")] 
public System.DateTime dateOfInspection { ... } 

Gửi một kết quả tin nhắn trong một lỗi phản ánh với InnerException :

'thời gian' là giá trị không hợp lệ cho thuộc tính SoapElementAttribute.DataType. Thuộc tính chỉ có thể được chỉ định cho các kiểu nguyên thủy.

Khi xóa thuộc tính DataType = "time" và DataType = "date", mọi thứ dường như hoạt động. Nhưng việc sửa đổi mã được tạo ra là một mẫu chống. Vậy có cách nào khác để làm việc này không?

Cập nhật:

Vấn đề chỉ tồn tại nếu ngày hoặc giờ yếu tố này là nullable!

Tôi Đã báo cáo lỗi trên trang web kết nối Microsofts. Nếu bạn có cùng một vấn đề, bạn có thể bỏ phiếu nó lên đây: https://connect.microsoft.com/VisualStudio/feedback/details/534453/consuming-java-webservice-with-nullable-date-and-time-elements-in-wcf-generates-invalid-datatype-attributes

Cập nhật 2:

Microsoft khẳng định đó là một lỗi và unlikly được cố định.

Cập nhật 3:

Tôi đã kiểm tra với VS2010 và nó vẫn tạo ra mã sai. Btw, chúng tôi đã kết thúc sửa đổi mã đã tạo ...

+0

http://www.headsphere.net/2007/11/java-wcf-datetime-interop.html? –

+0

Dường như đây có thể là lỗi. Vui lòng báo cáo tại http://connect.microsoft.com/visualstudio/. Sau đó đăng URL của báo cáo lỗi tại đây để người khác có thể bỏ phiếu trên đó. –

+0

Bạn đã thử lại điều này trong Visual Studio 2010 chưa? Nếu vậy thì cùng một lỗi vẫn còn đó? (Tôi hỏi bởi vì chủ nhân của tôi đang phát điên với WCF những ngày này ... –

Trả lời

2

Giải pháp tiềm năng cho lỗi này là tạo trình tạo proxy của riêng bạn. Điều này tương tự như việc sửa đổi mã được tạo ra, nhưng được cho là tốt hơn bởi vì bạn đang thay đổi những gì được tạo ra, thay vì thực hiện một sửa đổi sau thế hệ.

Xem http://blogs.msdn.com/b/pedram/archive/2007/08/10/customising-wcf-proxy-generation-in-visual-studio-2008.aspx để được hướng dẫn. Lưu ý về đường dẫn của các mục đăng ký mà bạn cần tạo: VS2010 sẽ có 10.0 là phiên bản trong đường dẫn đăng ký và trên Windows 64 bit cần phải ở trong SOFTWARE\Wow6432Node\Microsoft, không phải là SOFTWARE\Microsoft.

Tôi không chắc máy phát điện này là gì và không thể thực hiện/dễ dàng, ngoại trừ việc bạn có thể làm với WcfProxyGenerator bằng cách mở rộng lớp được công cụ đó sử dụng (đó là những gì được thực hiện trong liên kết ở trên).

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