2009-02-13 30 views

Trả lời

67

Nếu tôi nhớ chính xác, các biến UriTemplate trong đường dẫn luôn phân giải thành chuỗi khi sử dụng WebGet hoặc WebInvoke. Bạn chỉ có thể liên kết các biến UriTemplate thành int, long, vv khi chúng nằm trong phần truy vấn của UriTemplate.

+0

Tôi đang sử dụng mảng có răng cưa và đang hiển thị thông báo này. Có cách nào để vượt qua các mảng răng cưa để params? Tôi đang làm nó như thế này 'chuỗi MyMethod (string [] [] jaggedArray); ' – CodeIt

3

Thật không may bạn phải tự phân tích cú pháp nếu bạn muốn sử dụng UriTemplate.

72

Như dthrasher đã đề cập, di chuyển id đến phần truy vấn của URI. Điều này làm việc cho tôi:

[OperationContract] 
[WebGet(UriTemplate = "/foo?id={id}")] 
string GetFoo(int id); 

Xem "URI Đề án" trên wikipedia để biết thêm về các phần khác nhau của một URI: http://en.wikipedia.org/wiki/URI_scheme

+0

Cảm ơn! Điều này cũng loại bỏ req cho các tham số theo một thứ tự cụ thể. – Jerry

+3

Cảm ơn bạn đã cung cấp một ví dụ. – Cody

+0

Cảm ơn nó hoạt động –

4

Như những người khác đã đề cập, bạn phải sử dụng các chuỗi truy vấn để vượt qua không tham số chuỗi. Bài viết sau đây chi tiết cách phân tích cú pháp được thực hiện.

WCF Extensibility – QueryStringConverter

Coming back to “đúng đắn” WCF mở rộng, bài của tuần này là về QueryStringConverter. Đây thực sự là một chủ đề đơn giản cần được đề cập, vì mục đích của nó là cụ thể (không giống như các điểm mở rộng khác được xem trước đây, có thể sử dụng cho nhiều trường hợp) - trong WCF QueryStringConverter chỉ được sử dụng trên thiết bị đầu cuối trong đó có WebHttpBehavior được áp dụng cho chúng. Và ngay cả trong những hoạt động đó, chỉ trên các hoạt động có tham số được truyền qua các chuỗi truy vấn (một trong hai hoạt động với các tham số được đánh dấu bằng [WebGet] hoặc [WebInvoke] với UriTemplate liên kết rõ ràng một số tham số với truy vấn chuỗi) . QueryStringConverter là một phần có thể chuyển đổi giữa các tham số hoạt động và biểu diễn của chúng trong một chuỗi truy vấn.

...

Các QueryStringConverter mặc định được sử dụng bởi WebHttpBehavior hỗ trợ loại natively nhau, bao gồm tất cả đơn giản số loại (Byte, SByte, Int16, Int32, Int64, uint16, UInt32, UInt64, Độc thân, Double, Decimal), Boolean, Char, Object, String, DateTime, DateTimeOffset, TimeSpan, Guid, Uri và mảng Byte (về cơ bản, tất cả các loại mà DataContractSerializer coi là “nguyên thủy”, với ngoại lệ của XmlQualifiedName). Các kiểu liệt kê cũng là được hỗ trợ theo mặc định (biểu diễn chuỗi giá trị enum là được sử dụng). Cuối cùng, cũng có một bộ kiểu khác được hỗ trợ bởi QueryStringConverter mặc định - bất kỳ thuộc tính nào khai báo thuộc tính [TypeConverter] với bộ chuyển đổi kiểu.

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