我有一个 WCF 服务,它的方法接受一个数组(Frame 类型)。数组中的每个元素都包含一个小元素数组(Shape 类型),其中每个元素都有两个属性。所以,一切正常。但是现在我有一条从客户端到服务器的消息,该消息由一个 28 帧的数组组成。使用 Wireshark,我看到消息已正确传输。但在我的 .NET WCF 服务中,我没有接到电话。但为什么?绑定和阅读器配额设置为 5MB,这应该足够了。
绑定配置:
<bindings>
<webHttpBinding>
<binding name="default" transferMode="Streamed" maxReceivedMessageSize="5000000" maxBufferSize="5000000" maxBufferPoolSize="5000000">
<readerQuotas maxStringContentLength="5000000" maxArrayLength="5000000" />
</binding>
</webHttpBinding>
</bindings>
WCF 服务定义:
[ServiceContract]
public interface IEditor
{
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/WriteFrames", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
void WriteFrames(Frame[] frames, int animationSpeed);
}
类型说明:
- 类型:框架
- 阵列:形状
- 形状 1
- 形状 2
- ...
- 阵列:形状
- 类型:形状
- 数组:点
- 第 1 点
- 第 2 点
- ...
- 数组:点
- 类型:点
- X
- 是
该服务作为单例托管。请参阅静态 Create 方法。
sealed class EditorHost : ServiceHost
{
public EditorHost()
: base(typeof(Editor))
{
}
public EditorHost(params Uri[] baseAddresses)
: base(typeof(Editor), baseAddresses)
{
}
public EditorHost(Editor singleton, params Uri[] baseAddresses)
: base(singleton, baseAddresses)
{
}
internal static EditorHost Create(out Editor editor, int port = 8732)
{
var uri = new Uri(string.Format("http://localhost:{0}/", port));
editor = new Editor();
var host = new EditorHost(editor, uri);
return host;
}
}