3

我花了几个小时弄清楚为什么会收到以下消息:

The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.

我发现每当网络服务尝试发送具有基本获取/设置的属性时,我都会收到此消息。

例子:

public string Name {get;set;} //Works without problems

public string Name { get { return "test"; } } //Fails

第一次尝试它给了我以下错误:

The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.

如果我再试一次,它会给我以下错误:

An error occurred while receiving the HTTP response to http://localhost/webapi3/ProductData.svc. This could be due to the service endpoint binding not using the HTTP protocol. This could also be due to an HTTP request context being aborted by the server (possibly due to the service shutting down). See server logs for more details.

在我的跟踪日志中,我发现以下错误:No set method for property 'test' in type 'PS.Converter.ApiModel.DefaultBase'

这是否意味着在使用 WCF 时属性必须始终有一个集合?或者这是某种可配置的方式?

4

2 回答 2

1

该属性必须在 WCF 中有一个设置器 - 否则数据协定序列化程序无法反序列化它。如果您不希望该字段被序列化,您可以向其添加 IgnoreDataMember 属性。

如果您需要只读属性,只需添加一个私有设置器。

于 2013-03-05T08:39:05.673 回答
0

您可以提供私人二传手。除非我弄错了,否则应该使它(反)可序列化,但要防止值被覆盖:

public string Name { 
    get { return "test"; }
    private set{}
} 
于 2013-03-05T09:53:00.393 回答