我有一个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
绑定,但仍然收到相同的异常。
请建议,我该如何解决?