我遇到的问题是,我为自托管WCF服务提供的数据超出了它的处理能力。我在我的客户端上设置了maxReceivedMessageSize,但在这种情况下,客户端将数据传递给服务器,因此我需要在服务器上设置MaxReceivedMessageSize。我没有使用任何配置文件,我不知道如何在我当前的配置中设置它...
客户端:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Iplutocomm"
receiveTimeout="00:05:00" sendTimeout="00:05:00" maxReceivedMessageSize ="210242880">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647"/>
</binding>
</basicHttpBinding>
自助托管服务
Dim myServiceAddress As New Uri("http://" & LocalIpAddress & ":" & tcp_port & "/" & servicename)
myservicehost = New ServiceHost(GetType(plutocomm), myServiceAddress)
'Enable metadata publishing
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15
myservicehost.Description.Behaviors.Add(smb)
myservicehost.Open()
新的更改/更新
这样做会覆盖我假设框架设置的默认basichhtp绑定,因为我最初没有专门创建绑定吗?
我简而言之,在我的服务上运行的以下代码是否允许我当前的客户端配置“插入”新绑定?我现在仍然只有一个绑定sbefore,但我创建了一个绑定,取代了默认绑定?
Dim myServiceAddress As New Uri("http://" & LocalIpAddress & ":" & tcp_port & "/" & servicename)
myservicehost = New ServiceHost(GetType(plutocomm), myServiceAddress)
'*******NEW CHANGES
Dim BasicBinding As New BasicHttpBinding
BasicBinding.MaxReceivedMessageSize = 2147483647
myservicehost.AddServiceEndpoint(GetType(plutocomm), BasicBinding, myServiceAddress)
'/*******NEW CHANGES
' Enable metadata publishing.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15
myservicehost.Description.Behaviors.Add(smb)
myservicehost.Open()
答案 0 :(得分:0)
使用ServiceHost.AddServiceEndpoint(),传递您选择的绑定。
在你的情况下,这是设置了maxReceivedMessageSize的basicHttpBinding。
此方法有5次重载,因此您可以选择所需的重载。
答案 1 :(得分:0)
这样的事情:
Dim myBinding As New BasicHttpBinding() With { _
Key .MaxReceivedMessageSize = 210242880 _
}
myservicehost.AddServiceEndpoint(GetType(plutocomm), myBinding, myServiceAddress)
更新
你的绑定需要是“连贯的”,它们不需要是相同的。(如果你的客户端配置有60秒的超时,30秒超时的服务器会起作用但是会不连贯,同样的消息也是如此大小)