Tôi có một phương thức dịch vụ WCF khá đơn giản trả về một IQueryable, chỉ để thử nghiệm. Có lẽ tôi đã có một cái gì đó sai khi cố gắng hiểu những gì IQueryable được thiết kế cho. Tôi rõ ràng có kế hoạch sử dụng điều này với nhà cung cấp IQueryable của NHibernate sau đó. Nhưng trước tiên tôi gặp phải một số vấn đề serialization (ít nhất tôi nghĩ rằng nó có thể là vấn đề) bất cứ khi nào sử dụng một phương pháp WCF trả về một IQueryable. Nó thậm chí không làm việc cho một chuỗi đơn giản.Các vấn đề về IQueryable khi sử dụng WCF
Dưới đây là mã của tôi:
public IQueryable<string> GetEquipmentConfigurations()
{
var returnValue = new List<string>();
returnValue.Add("test");
return returnValue.AsQueryable();
}
Nó có thể không có nhiều ý nghĩa, nó chỉ là để thử nghiệm cho dù tôi thực sự có được những IQueryables qua dây sử dụng WCF. Bất cứ khi nào tôi gọi phương pháp này bằng cách sử dụng một khách hàng như SoapUI tôi nhận được một ngoại lệ ổ cắm và thiết lập lại kết nối, giống như tôi đã cố gắng trả lại một cái gì đó mà không được đánh dấu là DataContract. Nhưng điều duy nhất tôi làm ở đây là cố gắng trả lại một số danh sách chuỗi tệ hại. Có chuyện gì vậy?
tôi sử dụng basicHttpBinding, sau đây là các thiết lập của tôi:
<system.serviceModel>
<services>
<service name="EquipmentConfigurationService" behaviorConfiguration="DefaultBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/Krones.KBase/Services/EquipmentConfigurationService"/>
</baseAddresses>
</host>
<endpoint address=""
binding="basicHttpBinding"
contract="Krones.MES.KBase.Public.Service.EquipmentDefinition.IEquipmentConfigurationService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Thuộc tính OperationContract được thiết lập cho giao diện:
[OperationContract]
IQueryable<string> GetEquipmentConfigurations();
Tất cả đều hoạt động tốt khi chỉ trả lại một chuỗi đơn giản. Dù sao tôi muốn lấy lợi nhuận từ các tính năng IQueryable sử dụng LINQ sau này.
Bất kỳ ai có ý tưởng gì đang xảy ra ở đây không?
Cảm ơn và Chúc mừng,
Stefan
Nếu bạn đăng mã hoặc XML, ** vui lòng ** làm nổi bật các dòng đó trong trình soạn thảo văn bản và nhấp vào nút "mã" (101 010) trên thanh công cụ trình soạn thảo để định dạng và cú pháp tô sáng nó! –