使用Linq将IList作为REST API返回

时间:2011-05-09 11:35:30

标签: linq rest entity

我正在使用REST(使用WCF)从过去2年开始,但是对于Entity Model&然而Linq使用了nHibernate。

我用folloiwng做了一个简单的服务: -

NorthwindModel [具有Product,Order和Order_Detail表的数据模型] ProductService作为REST公开,具有特定的配置(不使用WebServiceHostFactory)

服务合同: -

[ServiceContract]
public interface IProductService
{
    [OperationContract]
    [WebGet(
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped)
    ]
    IList<Product> GetProducts();
}

服务实施: -

public class ProductService : IProductService
{
    #region IProductService Members

    public IList<Product> GetProducts()
    {
        IList<Product> prodList = new List<Product>();
        NorthwindEntities ne = new NorthwindEntities();
        var query = from category in ne.Products select category;
        prodList = query.ToList<Product>();
        return prodList;
    }

    #endregion

}

服务标签: -

<services>
  <service name="HellooData.ProductService" behaviorConfiguration="wcfJSONBehavior">
    <endpoint address="" behaviorConfiguration="REST" binding="webHttpBinding"
              contract="HellooData.IProductService" bindingConfiguration="RESTBINDING">
      <identity>
        <dns value="localhost"/>
      </identity>
    </endpoint>
    <endpoint address="mex" binding="webHttpBinding" contract="IMetadataExchange" bindingConfiguration="RESTBINDING" />
  </service>
</services>

绑定: -

 <webHttpBinding>
    <binding name="RESTBINDING" maxReceivedMessageSize="2147483647"  >
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </webHttpBinding>

尝试从浏览器调用服务后,我得到“错误324(net :: ERR_EMPTY_RESPONSE):服务器关闭了连接而没有在Chrome中发送任何数据”错误,而在Mozilla中发送一个空页

尝试调试但是数据被正确获取(77条记录)并且没有任何异常地返回。我在某种程度上对数据的配置或大小有疑问,但不确定。试过了 篡改结果集(只有2而不是77)结果仍然相同。

有人可以说出出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

我有这个问题;就我而言,我在SQL控制器完成使用之前就处理了数据库上下文。