2008-12-05 31 views
8

Tôi đang sử dụng dịch vụ web của Fedex và gặp phải lỗi gây phiền nhiễu ngay trước khi tôi thực sự có thể đến bất kỳ đâu.'Lỗi khi tuần tự hóa nội dung'. Sự cố khi gọi dịch vụ web của FedEx qua .NET 3.5

Đã xảy ra lỗi khi tuần tự hóa nội dung của địa chỉ thưValidationRequest1: 'Không thể tạo lớp tạm thời (kết quả = 1). lỗi CS0030: Không thể chuyển đổi loại 'FedEx.InterOp.AddressValidationServiceReference.ParsedElement []' thành 'FedEx.InterOp.AddressValidationServiceReference.ParsedElement' lỗi CS0029: Không thể chuyển đổi hoàn toàn loại 'FedEx.InterOp.AddressValidationServiceReference.ParsedElement' sang 'FedEx.InterOp .AddressValidationServiceReference.ParsedElement [] ' '. Vui lòng xem InnerException để biết thêm chi tiết.

Tôi đang sử dụng .NET 3.5 và có được một tên lớp khủng khiếp được tạo ra cho tôi (tôi không chắc chắn lý do tại sao nó không phải là chỉ AddressValidationService):

AddressValidationPortTypeClient addressValidationService = new ...;

trên lớp này tôi làm cho tôi cuộc gọi dịch vụ web:

addressValidationService.addressValidation(request);

Đây là thời điểm tôi gặp lỗi này.

Các tham chiếu duy nhất tôi có thể tìm thấy lỗi này xuất phát từ 1,1 dự án cổ đại. Trong trường hợp của tôi DLL của tôi có tham chiếu đến System.Web và System.Web.Services mà dường như là một vấn đề trở lại sau đó.

+0

FWIW, nó cũng xuất hiện như thế này đang xảy ra với các khách hàng dịch vụ WCF ... –

Trả lời

18

Bạn chỉ cần thay đổi [] [], chứ không phải đơn [].

Trong Reference.cs thay đổi

private ParsedElement[][] parsedStreetLineField; 
to 
private ParsedElement[] parsedStreetLineField; 
and 
public ParsedElement[][] ParsedStreetLine { 
to 
public ParsedElement[] ParsedStreetLine { 
+3

là những người vẫn cần câu trả lời này thực sự! cmon fedex! –

+0

API của ParcelForce có cùng vấn đề với các thuộc tính ParcelContents, Address và ServiceCodes của nó. –

7

Hóa tài liệu riêng của Fedex bao gồm đặc biệt này!

Tôi đang sử dụng wsdl.exe từ Microsoft để tạo mã và tôi gặp lỗi CS0029: Không thể chuyển đổi hoàn toàn loại 'fedexreq.ParsedElement' thành 'fedexreq.ParsedElement []'.

Đây là lỗi do Công cụ ngôn ngữ mô tả dịch vụ web (Wsdl.exe) tạo để tạo thông tin khách hàng. Khi bạn xuất bản một lược đồ có chứa các nút lồng nhau có thuộc tính maxOccurs được đặt thành giá trị "không bị chặn", công cụ Wsdl.exe tạo mảng đa chiều trong tệp mã được tạo. Do đó, mã được tạo ra chứa các kiểu không chính xác cho các nút lồng nhau. Để giải quyết sửa đổi mã được tạo ra bằng cách loại bỏ các ký tự mảng khung ([]) khỏi các câu lệnh chọn kiểu dữ liệu. Để biết thêm thông tin, hãy xem http://support.microsoft.com/kb/326790/en-ushttp://support.microsoft.com/kb/891386

6

Lưu ý: Để truy cập vào Reference.cs tập tin mà Simon_Weaver là đề cập đến, mở dự án trong visual studio, và trong Solution Explorer, nhấp chuột vào Web Reference và sau đó nhìn vào các biểu tượng nhỏ ở đầu Solution Explorer. Nhấp vào biểu tượng "Hiển thị tất cả tệp" để hiển thị các tệp ẩn. Bây giờ mở rộng tham chiếu web, sau đó mở rộng Reference.map bên trong và cuối cùng bạn sẽ thấy Reference.cs mà bạn có thể chỉnh sửa, thay thế [] [] bằng []

Đừng nhầm lẫn Tham chiếu này. cs bạn có thể có được từ Fedex khi tải xuống mã mẫu của họ.

+0

Điều này có thể tốt hơn khi nhận xét về câu trả lời mà bạn đang đề cập đến không? – pqsk

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