无法从响应

时间:2015-05-15 10:56:18

标签: c# web-services wcf

我有一个WCF服务有很多方法,其中两个是传输文件。一个是正​​确的,它在一行中将3个文件作为字节数组发送。但另一个是发送数据库行列表,其中每行有一个Docx文件。当WCF客户端调用此操作时,它在服务器端成功运行,并从数据库中获取行,但在发送响应后,客户端收到以下异常:

  

接收HTTP响应时发生错误   http://localhost/Service/Service.svc。这可能是应该的   不使用HTTP协议的服务端点绑定。这个   也可能是由于HTTP请求上下文被中止   服务器(可能是由于服务关闭)。请参阅服务器l ogs   更多细节。底层连接已关闭:意外   收到错误。

下面列出了最小代码:

[DataContract]
public class Document
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public byte[] File { get; set; }

    [DataMember]
    public int SchemaId { get; set; }

    [ForeignKey("SchemaId")]
    public virtual Schema Schema { get; set; }
}

[ServiceContract]
public interface IService
{
    [OperationContract]
    List<Document> GetDocuments(int schemaId);
}

public class Service : IService, IDisposable
{
    DbContext db = new DbContext();
    public List<Document> GetDocuments(int schemaId)
    {
        List<Document> docs = db.Documents.Where(d => d.SchemaId == schemaId).ToList();
        return docs;
    }
}

public partial class ServiceClient : System.ServiceModel.ClientBase<IService>, IService
{
    public Document[] GetDocuments(int schemaId)
    {
        return base.Channel.GetDocuments(schemaId);
    }
}

try
{
    ServiceClient client = new ServiceClient("BasicHttpBinding_IService");
    client.Open();
    List<Document> docs = client.GetDocuments(9).ToList();
    client.Close();
}
catch{}

在WCF客户端配置文件中,我使用的默认值为basicHttpBinding。收到此异常后,我尝试在客户端增加maxReceivedMessageSize绑定,但仍然收到相同的异常。

请建议,我该如何解决?

0 个答案:

没有答案