Tôi đã được giao nhiệm vụ gửi dữ liệu đến dịch vụ web của bên thứ ba. dịch vụ được chứng minh là hoạt động với máy khách Java, tuy nhiên, nó không có trong .Net.Làm thế nào tôi có thể sửa đổi một XSD được tạo ra để khắc phục lỗi .Net đã biết để gây ra ngoại lệ "cs0030: Không thể tạo một lớp tạm thời"
Khi tôi tạo ra các dịch vụ proxy và một trong hai nhanh chóng các dịch vụ hoặc serialise đối tượng yêu cầu, tôi nhận được lỗi sau:
Unable to generate a temporary class (result=1).
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType'
error CS0030: Cannot convert type 'TestStarXML.wsStarService.VSOptionConflictSetType[]' to 'TestStarXML.wsStarService.VSOptionConflictSetType'
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorRequirementSetType[]' to 'TestStarXML.wsStarService.ColorRequirementSetType'
error CS0030: Cannot convert type 'TestStarXML.wsStarService.ColorExclusionSetType[]' to 'TestStarXML.wsStarService.ColorExclusionSetType'
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionInclusiveSetType' to 'TestStarXML.wsStarService.VSOptionInclusiveSetType[]'
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.VSOptionConflictSetType' to 'TestStarXML.wsStarService.VSOptionConflictSetType[]'
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorRequirementSetType' to 'TestStarXML.wsStarService.ColorRequirementSetType[]'
error CS0029: Cannot implicitly convert type 'TestStarXML.wsStarService.ColorExclusionSetType' to 'TestStarXML.wsStarService.ColorExclusionSetType[]'
Đảng thứ 3 mà gửi cho chúng tôi dịch vụ này sử dụng Java, và họ không có vấn đề tạo proxy dịch vụ từ dịch vụ thử nghiệm. Sự hiểu biết của tôi cho đến nay là có một lỗi trong .Net (see here) tạo ra XSD cho tệp WSDL.
Trong câu trả lời here, nó đề cập đến việc sửa đổi XSD được tạo ra với các thuộc tính giả, vì vậy tôi đã thêm thuộc tính giả như đề xuất:
<xs:complexType name="VSInclusivesOptionType">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="VSOptionInclusiveSet" type="tns:VSOptionInclusiveSetType" />
</xs:sequence>
<xs:attribute name="tmp" type="xs:string" /> <!-- this is all I have added (for each of the types in the exception message) -->
</xs:complexType>
<xs:complexType name="VSOptionInclusiveSetType">
<xs:sequence>
<xs:element minOccurs="0" name="SetID" type="ns2:IdentifierType" />
<xs:element minOccurs="0" name="NumberOfOptionsNumeric" type="xs:decimal" />
<xs:element minOccurs="0" maxOccurs="unbounded" name="VSOption2" type="tns:VSOption2Type" />
</xs:sequence>
</xs:complexType>
Điều duy nhất thêm các thuộc tính giả đạt được là để giảm thời gian biên dịch của dự án từ vài phút đến vài giây.
Khác với điều này, VS2008 dường như không nhận thấy những thay đổi - Tôi vẫn không thể sắp xếp các đối tượng hoặc khởi tạo dịch vụ mà không nhận được ngoại lệ được đề cập ở trên, tôi đang thiếu hoặc làm sai?
Chỉ là một câu hỏi kiểm tra vì có vẻ như bạn đã triển khai chính xác giải pháp được đề xuất trong bài đăng được liên kết. Có thể là vấn đề với VSInclusivesOptionType được giải quyết và bạn đang làm việc chống lại nestings của (3) datatypes khác được tham chiếu trong thông báo lỗi? (VSOptionConflictSetType; ColorRequirementSetType; ColorExclusionSetType)? – dcbyers
@dcbyers Tôi đã triển khai các thay đổi ở trên cho tất cả 4 loại. –