【发布时间】:2014-02-13 17:26:52
【问题描述】:
我托管一个 WCF REST 服务并在同一个 webrole 中使用它。配置在代码隐藏中完成。我已经尝试了很多解决方案并在此发布,
但我无法弄清楚为什么我无法覆盖 MaxRecievedMessageSize 。如果大小超过 64kb。它抛出异常。
WebChannelFactory<X> channelFactory;
if (!ChannelFactories.ContainsKey(endpointName.ToString(CultureInfo.InvariantCulture)))
{
channelFactory = new WebChannelFactory<X>(new Uri(endpointName));
lock (ChannelFactories.SyncRoot)
{
ChannelFactories[endpointName.ToString(CultureInfo.InvariantCulture)] = channelFactory;
}
}
else
{
channelFactory =
ChannelFactories[endpointName.ToString(CultureInfo.InvariantCulture)] as
WebChannelFactory<X>;
}
//Configure The Size here
if (channelFactory != null)
{
channelFactory.Endpoint.Binding = new WebHttpBinding
{
MaxReceivedMessageSize = 2147483647,
MaxBufferSize = 2147483647,
ReaderQuotas =new XmlDictionaryReaderQuotas()
{
MaxArrayLength = 2147483647,
MaxStringContentLength = 2147483647,
MaxDepth = 2147483647,
MaxNameTableCharCount = 2147483647,
MaxBytesPerRead = 2147483647
},
MaxBufferPoolSize = 2147483647,
OpenTimeout = new TimeSpan(0, 0, 10, 0),
ReceiveTimeout = new TimeSpan(0, 0, 10, 0),
TransferMode = TransferMode.Streamed,
CloseTimeout = new TimeSpan(0, 0, 10, 0),
SendTimeout = new TimeSpan(0, 0, 10, 0)
};
和 Web.Config
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<diagnostics>
<messageLogging logEntireMessage="true" logMessagesAtServiceLevel="false" logMessagesAtTransportLevel="false" logMalformedMessages="true" maxMessagesToLog="5000" maxSizeOfMessageToLog="2000"></messageLogging>
</diagnostics>
<standardEndpoints></standardEndpoints>
</system.serviceModel>
【问题讨论】:
标签: c# wcf asp.net-mvc-4 .net-4.5