2013-05-31 32 views
8

Tôi đang cố thêm thuộc tính tùy chỉnh vào bộ sưu tập BrokeredMessage.Properties trước khi gửi nó tới Xe buýt Dịch vụ Azure. Loại thuộc tính tùy chỉnh là một enum:Windows Azure Service Bus - BrokeredMessage.Properties với Giá trị Enum

[Serializable, DataContract] 
public enum FooBar 
{ 
    [EnumMember] 
    Foo = 0, 
    [EnumMember] 
    Bar = 1 
} 

Tôi cũng đã thử nhiều kết hợp Thuộc tính và phiên bản không có Thuộc tính.

Đây là mã có thêm tài sản và gửi thông điệp:

var brokeredMessage = new BrokeredMessage(new MessageObject(){ //etc }); 
brokeredMessage.Properties.Add("FooBar", FooBar.Foo); 
queueClient.Send(brokeredMessage); 

Các lỗi sau đây được trả lại khi cố gắng gửi thông điệp:

System.Runtime.Serialization.SerializationException : Serialization operation failed due to unsupported type Namespace.FooBar. 

tôi đã cố gắng để theo dõi xuống một số tài liệu chi tiết hơn về các giới hạn BrokeredMessage.Properties (nếu có) và không thể tìm thấy bất kỳ thứ gì chỉ định rằng chỉ có thể sử dụng các kiểu nguyên thủy.

Bất kỳ ý tưởng nào về lý do tại sao tính năng này không hoạt động?

Chỉnh sửa:

Nên nói rằng tôi đang sử dụng V2.1.0.0 của Microsoft.ServiceBus.

Trả lời

10

Một thời gian ngắn, bạn chỉ có thể sử dụng các loại đơn giản như chuỗi, số nguyên.

Đối với trường hợp của bạn, bạn có thể thử hai cách

  1. brokeredMessage.Properties.Add ("foobar", (int) FooBar.Foo);
  2. brokeredMessage.Properties.Add ("FooBar", FooBar.Foo.ToString());

Tự chọn bạn, cái nào tốt hơn cho bạn.

+0

Cảm ơn câu trả lời của bạn. Điều này trở nên rõ ràng, mặc dù có vẻ là thiếu tài liệu về nó (trừ khi ai đó có thể chỉ cho tôi theo hướng của nó?) Tôi luôn luôn thích chuyển đổi giá trị enum thành int chứ không phải là một chuỗi - vì vậy đó là tùy chọn tôi đã đi với. – GaryJL

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